Python3 FileNotFoundError 与任何文件,使用 subprocess.popen()
Posted
技术标签:
【中文标题】Python3 FileNotFoundError 与任何文件,使用 subprocess.popen()【英文标题】:Python3 FileNotFoundError with any file, using subprocess.popen() 【发布时间】:2020-03-16 11:56:36 【问题描述】:我一直在尝试从 pickle 文件中加载数据,以便在 Windows 上与 pySpark 一起使用
这是我的代码:
import subprocess
import pickle
proc = subprocess.Popen(["cat", "./users-partition.pickle"],
stdout=subprocess.PIPE)
pickle_content = proc.communicate()[0]
partition = pickle.loads(pickle_content)
len(partition)
我已经在网上搜索了几个小时来完成这项工作,但仍然没有运气。 错误信息(第 3 行)是:
FileNotFoundError: [WinError 2] The system cannot find the file specified
尝试了各种文件,肯定都在当前工作目录中。 将不胜感激任何帮助!谢谢!!
【问题讨论】:
看起来您在 Windows 上。你的%PATH%
上有一个名为cat.exe
的程序吗?
另外,你为什么要尝试运行一个子进程来 cat 一个泡菜文件?
1.检查并发现路径变量2中没有这样的值。它是大数据analisys课程家庭作业的py脚本的一部分,只是真正遵循脚本
@VictorMartinov 你应该用open()
打开泡菜文件然后read()
它,或者pickle.load(open("./users-partition.pickle", "rb"))
@BrianCain 谢谢,pickle.load(open("./users-partition.pickle", "rb"))
命令似乎可以正常工作!我猜原始脚本假定操作系统是 linux,这就是它不起作用的原因(Windows 上没有“cat”命令)。
【参考方案1】:
而不是像在 Windows 上那样使用路径中可能不存在的 cat。你可以只使用内置在文件处理中的 python。
file = open('./users-partition.pickle','r')
text = file.read()
变量 'text' 将包含 cat 在那时返回的所有内容。在此处了解更多信息: https://www.w3schools.com/python/ref_func_open.asp
【讨论】:
谢谢!但这些命令没有按需要读取泡菜文件(字典格式)。在这种情况下,命令pickle.load(open("./users-partition.pickle", "rb"))
做得更好。以上是关于Python3 FileNotFoundError 与任何文件,使用 subprocess.popen()的主要内容,如果未能解决你的问题,请参考以下文章
python FileNotFoundError: [WinError 2] 系统找不到指定的文件。
FileNotFoundError:找不到模块“libvlc.dll”
Pandas.read_csv() FileNotFoundError 即使文件存在