2017-01-15 43 views
0

我正在编写一个程序来处理服务器上的一些数据。在整个程序中,许多文件被制作并作为输入发送到其他程序。要做到这一点,我平时做的命令字符串,然后像这样运行:Python终端调用无法与文件进行交互

cmd = "prog input_file1 input_file2 > outputfile" 
os.system(cmd) 

当我运行命令,但是,这些程序被称为报告说,他们无法打开文件。如果我在本地计算机上运行python代码,那没问题。当我将它加载到服务器上时,它开始失败。我认为这与权限问题有关,但我不知道如何解决这个问题。许多文件,特别是输出文件,都是在运行时创建的。输入文件对所有用户具有完全权限。任何帮助或建议,将不胜感激!

干杯!

+1

检查包含生成文件的目录的权限:运行脚本的进程必须对目录具有写权限才能在其中创建文件。 – xzoert

+0

该目录拥有所有用户的完全权限。 – Grimey

+0

您的本地PC是否运行Windows和服务器Linux?本地目录不是Linux中搜索路径的一个元素,所以'prog something'通常会引发一个错误消息,如'prog:command not found'。您必须命名“prog”所在的目录。 './prog something'应该可以工作。 – Marvo

回答

0

您列出的Python代码简单且正确,所以问题可能不在您的示例的两行中。以下是您需要查看的一些相关区域。

权限 运行python脚本的用户必须具有相应的权限(读,写,执行)。我从评论中看到,你已经检查过了。

如果该命令中的示例文本直接输入到你的源代码一样,那么你知道什么命令,你运行 什么命令运行,但如果要生成的任何部分(如列表的操作数,输出文件的名称,其他参数等),确保代码生成命令的部分没有错误。例如,在致电os.system(cmd)之前,请考虑包括类似print("About to execute: " + cmd)的行,以便您可以准确查看要运行的内容。

直接调用命令 如果以上所有内容看起来不错,请尝试直接在服务器上的终端执行该命令。你会得到什么输出。问题可能出在底层命令本身而不是Python代码上。

相关问题