【发布时间】:2022-07-21 03:09:02
【问题描述】:
我的脚本出错了。我在 Linux (Ubuntu) 上,我的脚本运行良好......但是当我将它发送给使用 macOS 的人时,他们收到此错误:
FileNotFoundError: [Errno 2] 没有这样的文件或目录:'mytext.txt'`
with open('mytext.txt', 'r') as f:
file = f.readlines()
当然,我(和 Google)都认为这是因为相对路径。我改成绝对路径了,还是一样的错误。
import os
with open(os.getcwd() + '/mytext.txt', 'r') as f:
file = f.readlines()
好吧,那没用。继续搜索,我尝试了这个解决方案:
import os
path_name = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'mytext.txt')
with open(path_name, 'r') as f:
file = f.readlines()
...但这也没有用。
关于为什么会这样的任何想法?脚本的每一次迭代都对我这个 Linux 用户有效,但对 macOS 用户无效。关于 Linux 和 macOS Python 脚本的交叉兼容性,我是否遗漏了什么,或者在我的实际代码中我做错了什么?是的,我确信在与我们俩的实际脚本完全相同的目录中有一个mytext.txt。谢谢你帮助我!
编辑:当试图在其他位置寻求有关此问题的帮助时,有人要求提供完整的错误信息。如果有帮助,这里是:
Traceback (most recent call last):
File "/Volumes/drive2/test/mytext.py", line 15, in <module>
with open(path_name, 'r') as f:
IOError: [Errno 2] No such file or directory: '/Volumes/drive2/test/mytext.txt'
重申一下,它对我(以及其他不在 macOS 上的人)来说很好用。错误仅适用于尝试在 macOS 上运行它的人。
【问题讨论】:
-
用户如何运行脚本?试试
cat mytest.txt -
您和其他用户是否都从同一目录运行脚本?在 MacOS 上,默认目录是用户运行脚本时所在的位置,而不是脚本的位置。我认为 Linux 也是这种情况(我现在无法检查),那么您是否可能已经在正确的目录中,或者您已经制作了 mytext.py 的副本,而您的朋友不是/还没有?
-
No such file or directory: '/Volumes/drive2/test/mytext.txt'- 文件根本不存在。请仔细检查。还有名称(可能的问题:尾随空格、同形文字、不可打印的字符)。 -
老实说,我很惊讶它在任何地方都可以使用。要打开一个文件,您需要知道它在所有系统上的路径。你这里的路径都不是很“可靠”: os.getcwd() + '/mytext.txt' 是当前目录, os.path.abspath(file)), 'mytext.txt' 是python文件的兄弟。 Macos 与 Linux 文件方式相同。我建议您对 macos 实际文件名进行硬编码,然后从那里开始工作。 2 额外的东西:目录名称中是否有空格?文件的读取权限是什么?
-
您是否将
mytext.txt连同您的代码一起发送给其他用户?其他用户可能没有文件mytext.txt。当您删除mytext.txt时,您的代码是否在您的计算机上运行?也许所有问题都在于您已经拥有mytext.txt,但其他用户没有。也许您的代码应该首先检查文件是否存在,然后读取它或通知该文件不存在 - 或者它应该创建空文件mytext.txt。您也可以使用os.listdir(folder)查看文件夹中的其他用户。