【问题标题】:Cannot write my data to a file? I cannot see the error无法将我的数据写入文件?我看不到错误
【发布时间】:2017-05-23 16:42:29
【问题描述】:

过去几个小时我一直在尝试缩小问题范围,但我看不到它。我是 Python 3 的新手,正在尝试解析项目的文本文件。 解析只是清理一些空白并替换分隔符。 我不明白为什么它不起作用。

更具体地说 我收到了这个特殊的错误:

"NameError: name 'out' is not defined"

代码:

save_path = 'C:/UsersDesktop/CSVproject'

with open('C:/Users/CSVproject/sourceData.dat', 'r') as f:

    for line in f:
        if ':DUBLIN' in line:
            line = line.replace(' ', '')
            line = line.replace(':', ';')
            print(line)
            found = True
            fullNameOfFile = os.path.join(save_path, 'newFormattedData'+".csv")
            out = open(fullNameOfFile, 'w')

        for line in f:
            out.write(line)

【问题讨论】:

    标签: python python-3.x csv parsing


    【解决方案1】:

    每次出现 :DUBLIN 时,您都试图打开文件。您只需要打开一次,并且应该在范围确保句柄对 write 方法可见的地方打开它。

    fullNameOfFile = os.path.join(save_path, 'newFormattedData'+".csv")     
    
    out = open(fullNameOfFile, 'w') 
    
    for line in f:
        if ':DUBLIN' in line:
            line = line.replace(' ', '')
            line = line.replace(':', ';')
            print(line)
            found = True
    
            out.write(line)
    

    而且您绝对不希望有一个用于迭代输入文件的嵌套循环。

    【讨论】:

    • 哦,拍!我表你想要你的意思...我实施了你的建议。谢谢你。它会根据我的需要创建文件,但不会在替换方法中强制执行解析逻辑。它也不会像我在代码中那样打印到控制台。我可能正在做一些我看不到的非常愚蠢的事情......
    • 嗯,这将立即解决您的问题,所以您是否介意接受正确的答案并发布另一个问题。在那个问题中,请解释您要达到的目标。您的示例输入是什么样的,以及您希望将什么保存到输出文件中。
    • 很公平。感谢您的贡献。我不想被视为该网站的垃圾邮件用户。在再次发布之前,我会再尝试一下代码。
    • 是的,这是正确的方法,实际上我的态度是 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多