Python文件写入可在Windows上运行,但不能在Linux上运行

时间:2018-09-01 02:19:45

标签: python

我有一个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

2 个答案:

答案 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)

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

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