我有一个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
答案 0 :(得分:1)
确保您要写入该文件的目录存在。如果没有,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)
答案 1 :(得分:0)
从该错误消息中,尚不清楚问题是该文件在目录中不存在,还是目录本身不存在。
最简单的解决方法是在执行该命令之前确保文件存在。