下面的一段代码是一个较大程序的一部分,我正在远程服务器上通过一个批处理脚本运行该程序,第一行是#!/bin/bash -l
。你知道吗
在我的本地机器上,它正常运行,但在远程服务器上出现权限问题。怎么了?你知道吗
代码的描述对问题可能并不重要,但基本上代码使用awk根据文件名处理文件的内容。你知道吗
为什么awk拒绝对这些文件进行操作?当我在远程服务器的shell提示符下直接运行awk时,它工作正常。你知道吗
#!/usr/bin/env python
list_of_files = ["file1", "file2", "file3"]
for file in list_of_files:
awk_cmd = '''awk '/^>/{print ">" substr(FILENAME,1,length(FILENAME)) ++i; next} 1' ''' + file + " > tmp && mv tmp " + file + \
" | cat files > 'pooled_file' "
exitcode = subprocess.call(awk_cmd, shell=True)
任何帮助都将不胜感激。你知道吗
我很确定这是一个权限问题,因为当你登陆到远程机器时,它不会登陆到你的输入文件所在的目录,当然它会登陆到远程服务器上登录用户的主目录。因此,使用完整路径提及文件名是一种很好的做法(请确保目标位置中也存在具有给定路径的文件名,否则您可以在其上编写一个包装器来检查文件是否存在)。你能试试下面的吗。你知道吗
我没有测试它,但是我已经按照完整路径更改了它,因为
awk
将打印带有文件名的完整路径,所以我已经将代码中的FILENAME
更改为按照数组的位置,为了安全起见,我还将tmp
临时文件更改为tmp$$
。你知道吗相关问题 更多 >
编程相关推荐