繁体   English   中英

在MAC上用Python调用Popen-错误找不到文件

[英]Calling Popen in Python on a MAC - Error can not find file

当我尝试退出Python 3.51程序以运行Popen命令时,出现以下错误。 但是,当我将传递给Popen的确切字符串复制到Terminal命令行时,它可以正常工作,并在Adobe Reader中打开该文件,这是我的.pdf文件的默认应用程序。

这是代码:

  finalCall = r'open /Users/gbarnabic/Documents/1111/combined.pdf' print(finalCall) pid_id = subprocess.Popen(finalCall).pid 

这是错误:

打开/Users/gbarnabic/Documents/1111/combined.pdf Tkinter回调Traceback中的异常(最近一次调用最近):文件“ /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/tkinter/ init 。 py”,在调用返回1549行,返回self.func(* args)文件,“ pdfcomb2.py”,在212行,在change_dir self.openPDF(outFileName,pageNum)文件,“ pdfcomb2.py”,在426行,在openPDF子进程中。运行(finalCall)文件“ /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py”,行696,以Popen(* popenargs,** kwargs)作为进程运行:“文件” /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/subprocess.py“,第950行, init restore_signals,start_new_session)文件“ /Library/Frameworks/Python.framework/Versions/3.5/lib/ python3.5 / subprocess.py“,行1544,在_execute_child中引发child_exception_type(errno_num,err_msg)FileNotFoundError:[Errno 2]没有这样的文件或目录:'open /Users/gb/Documents/1111/combined.pdf'Georges- MBP:filepicktest gb $ open / Users / gb / Documents / 1 111 / combined.pdf Georges-MB​​P:filepicktest gb $

使用Popen时,您需要将shell=True设置为在字符串列表中将命令作为字符串或split命令传递。 可以用shlex完成

import shlex
import subprocess
subprocess.Popen(shlex.split('open ....'))

您可以在文档中查看示例: https : //docs.python.org/2/library/subprocess.html#subprocess.Popen

因此这里的错误意味着Python尝试运行名称为open /Users/gb/Documents/1111/combined.pdf文件。 显然不存在

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM