通过bash / python脚本在Windows中找不到路径

时间:2014-05-26 15:28:02

标签: python windows bash csv

这是包含.csv的{​​{1}}文件:

target,path

我在[root@server ~]# head /usr/local/CustomAppResults/App/targets.txt server1.com,C:\\Program Files\\App\\ 脚本中逐行遍历.csv ..

Bash

IFS="," while read target path do # Windows target result=$(python /root/apache-tomcat-7.0.37/webapps/App/tools/remoteStafCommand.py "$target" "dir $path /B") resultCode=$? echo "$result" done 脚本将bash文件的内容传递到csv.脚本,其内容如下。
Python脚本运行Python子进程并解析结果,该结果将返回并存储在staf脚本的result内。

Bash

这是我得到的输出,为什么它找不到路径?它存在。

[root@server ~]# cat App/tools/remoteStafCommand.py 
import subprocess,re,sys
from subprocess import CalledProcessError, check_output

print "1st arg: %s" % (sys.argv[1])
print "2nd arg: %s" % (sys.argv[2])

try:
    output = subprocess.check_output(["staf", "%s" % (sys.argv[1]) , "PROCESS", "START", "SHELL", "COMMAND", "%s" % (sys.argv[2]), "WAIT", "RETURNSTDOUT", "STDERRTOSTDOUT"])
    result = re.findall(r'Data\s*:\s*((?:[^\n]*(?:[\r\n]+(?!\s*}))?)+)', output, re.DOTALL)[0]
    print result
except CalledProcessError as e:
    print(e.returncode)
    sys.exit(e.returncode)

2 个答案:

答案 0 :(得分:0)

read命令在空格上标记,而不是逗号。您可以通过更改IFS的值来覆盖此值。或者,如果文本文件未用于其他任何内容,请将其格式更改为在字段之间使用空格而不是逗号。或者更好的是,让你的Python脚本直接读取和解析文件 - 简单的Bash脚本需要考虑在内。

答案 1 :(得分:0)

直接在path文件中用双引号包装.csv以进行转义..

[root@server ~]# head /usr/local/CustomAppResults/App/targets.txt 
server1.com,"C:\\Program Files\\App\\"