Python 文件写入适用于 Windows,但不适用于 Linux



我有一个python脚本,我正在从Windows迁移到Linux,但是我在写入文本文件的一小部分代码时遇到了问题。

它在Windows上工作正常,但在Linux上给了我一个错误。

try:
subprocess.Popen('echo "'+ user_id+'|'+str(op.createdTime)+'" >> dataSeen/%s.txt' % group_id, shell=True, stdout=subprocess.PIPE, )
except Exception as e:
print e

在 Linux 上,它会抛出此错误:

/bin/sh: dataSeen/filename.txt: No such file or directory

确保您尝试将该文件写入的目录存在。如果没有,bash 不会自动创建必要的子目录。

在执行文件写入之前,可以使用os.mkdir确保目录存在。

import os
if not os.path.exists('./dataSeen'):
os.mkdir('./dataSeen')

Python还具有出色的内置文件写入操作;您无需使用subprocess即可通过命令行写入文件。如果您在 Windows 和 Linux 上运行应用程序,则内置函数会更加健壮,因为它们在构建时考虑了跨平台兼容性。

with open('dataSeen/filename.txt', 'w') as f:
f.write(my_data)

从该错误消息中,不清楚问题是文件在目录中不存在,还是目录本身不存在。

解决此问题的最简单方法是在执行该命令之前确保文件存在。

最新更新