Python脚本不写入txt文件

Posted

技术标签:

【中文标题】Python脚本不写入txt文件【英文标题】:Python script not writing to txt file 【发布时间】:2016-08-17 23:03:34 【问题描述】:

我有一个 Python 脚本可以在我的笔记本电脑上正常运行,但是在我的树莓派上运行时,以下代码似乎无法正常运行。具体来说,“TextFile.txt”没有被更新和/或保存。

    openfile = open('/PATH/TextFile.txt','w')
    for line in lines:
        if line.startswith(start):
            openfile.write(keep+'\n')
            print ("test 1")
        else:
            openfile.write(line)
            print ("test 2")
    openfile.close()

我在输出中看到“测试 1”和“测试 2”,因此我知道正在访问代码、路径正确等

这可能是由于权限问题。我正在使用以下命令从终端运行脚本:

   usr/bin/python PATH/script.py

Python 归“root”所有,script.py 归“Michael”所有。

【问题讨论】:

如果是权限问题,打开文件会抛出异常,但你声称没有发生。 【参考方案1】:

由于您的代码正在运行,因此某处应该有一个文件。

您调用“PATH/script.py”,但程序中有“/PATH/TextFile.txt”。 PATH 之前的斜线是错误的吗?您是否检查过程序中的路径是否真的是您要查找输出文件的位置?

【讨论】:

【参考方案2】:

大家好,感谢您的意见。我能够弄清楚它正在写入新文件,但它被相同的文本覆盖。原因是“.startswith”在我预期为真时返回假。这种误解是由于 Windows 和 Unix 处理换行符 (/n /r) 的方式不同。

【讨论】:

【参考方案3】:

我的第一个猜测:

文件是否存在?如果它不存在,那么您无法写入它。如果文件不存在,试试这个创建文件:file = open('myfile.dat', 'w+')

另外手动打开和关闭文件句柄在 python 中是不好的做法。 with 语句会自动为您处理资源的打开和关闭:

with open("myfile.dat", "w+") as f:
    #doyourcalculations with the file object here
    for line in f:
        print line

【讨论】:

以上是关于Python脚本不写入txt文件的主要内容,如果未能解决你的问题,请参考以下文章

python处理txt文件的若干脚本

将字典保存为 Python 脚本

利用python和shell脚本生成train.txt的标签文件

PyX python脚本将文件写入磁盘但不写入屏幕

Python中将变量按行写入txt文本中

在 EC2 上运行 cronjob(Python 写入文件)