Python文件写入在Windows上工作,但在Linux上不工作

Python文件写入在Windows上工作,但在Linux上不工作,python,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 Excepti

我有一个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还具有强大的内置文件写入操作;您不需要使用
子流程
通过命令行写入文件。如果在Windows和Linux上运行应用程序,内置函数会更加健壮,因为它们是在考虑跨平台兼容性的情况下构建的

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

您告诉bash附加到一个不存在的目录中的文件中,使用Python调用shell将输入重定向到一个文件没有什么意义。如果您想编写shell脚本,只需使用
bash
。Shell命令不是跨平台的:Python是。最好是用Python打开文件并在不调用
子进程的情况下进行追加。谢谢您的建议谢谢,这正是我希望得到的响应类型。我对python不太在行,我正在修改别人为我编写的用于windows的脚本。我正试图让它跨平台,同时学习python,哈哈。我将尝试一下,它看起来正是我所需要的。再次谢谢你,没问题。如果答案对您有帮助,您可以对其进行投票和/或使用复选标记将其标记为“已接受”。欢迎使用StackOverflow,祝您在学习Python的过程中好运!谢谢你的建议