Windows上的Python:路径作为子流程参数被修改并生成错误
发布时间:2020-12-14 05:53:17 所属栏目:Windows 来源:网络整理
导读:我在 Windows和 Python 2.6上使用子进程如下.我试图使用遗留解析器应用程序(假设parser.py)解析文本文件,如下所示: import subprocessk = subprocess.Popen(['python','parser.py','-f C:Report12011-03-14.txt'],shell=True,stdout=subprocess.PIPE,stde
我在
Windows和
Python 2.6上使用子进程如下.我试图使用遗留解析器应用程序(假设parser.py)解析文本文件,如下所示:
import subprocess k = subprocess.Popen(['python','parser.py','-f C:Report12011-03-14.txt'],shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT) print k.communicate() 这里的问题是文件名传递给遗留应用程序的方式,我无法更改代码但只能使用Python访问它. 它生成时出现以下错误: IOError: [Errno 22] invalid mode ('r') or filename: C:Report12011-03-14.txt 当我从traceback复制修改后的文件名(带有双正斜杠)来检查是否存在时,系统无法找到它. 问题:如何将路径作为参数传递,以便在不更改为双斜线的情况下处理它,以便系统可以读取文件? 注意:os.sep也无法解决问题. 编辑:使用os.system执行工作完美,但问题是获取输出供以后使用.我目前在模块(run_parser.py)中使用os.sytem,然后在另一个模块(get_parse_status.py)中使用子进程,Popens run_parser.py来获取输出.我会感激任何比这更好的东西. 谢谢你的时间. 解决方法
更改参数列表以将路径编码为原始字符串:
k = subprocess.Popen(['python','-f',r'C:Report12011-03-14.txt'],stderr=subprocess.STDOUT) 一个简单的程序,它读取文件并报告长度: import sys import os userinput = sys.argv[1] data = open(userinput,'rb').read() datalength = len(data) fname = os.path.basename(userinput) print "%s datasize = %s" % (fname,datalength) 然后通过解释器调用它: >>> k = subprocess.Popen(['python','test2.py','w:bintest2.py'],stderr=subprocess.STDOUT) >>> k.communicate() 5: ('Traceback (most recent call last):rn File "w:bintest2.py",line 4,in <module> data = open(userinput,'rb').read() IOError: [Errno 22] invalid mode ('rb') or filename: 'w:x08intest2.py',None) >>> k = subprocess.Popen(['python',r'w:bintest2.py',r'w:bintest2.py'],stderr=subprocess.STDOUT) >>> k.communicate() 6: ('test2.py datasize = 194n',None) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 错误:类未注册(HRESULT异常:0x80040154(REGDB_E_CLASSNOT
- windows-server-2008 – 修复Active Directory中的用户和计
- windows-server-2008 – Windows客户端:Windows或Linux域控
- .net – PDFLibNet.dll或它是否拥有商业产品的许可?
- 调试 – 如何在Win7中调试登录屏幕保护程序?
- windows – 在Visual Basic 6中访问动态加载的DLL(使用Load
- windows – 将markdown斜体和粗体转换为乳胶
- Windows安装MySQL
- windows-server-2008-r2 – 强制传递重试,而不重新启动Wind
- Windows 下单机最大TCP连接数