FileNotFoundError:[Erno 2]没有这样的文件或目录,映射驱动器,Python



我对Linux和Python都是新手,所以我的术语和对环境的理解可能不正确,但我只是试图在网络共享上打开一个文件,似乎无法正确打开。

我在树莓派上创建了文件夹~/NAS_2,并使用fstab中的条目将其映射到NAS上的共享。ls命令和结果显示,该文件存在,并且在使用Pi帐户登录时可以从Pi中看到,该帐户是root的成员。

pi@PI-0W-02: ~ $ ls -ld ~/NAS_2
drwxrwxrwx 52 root root 0 Oct  9 08:56 /home/pi/NAS_2

共享中有一个名为setup_info.txt的文件。

pi@PI-0W-02: ~ $ ls ~/NAS_2/setup_info.txt
/home/pi/NAS_2/setup_info.txt

当我尝试使用下面的代码从Python打开文件时,我在Python代码片段后面得到了错误。

>>> file_object  = open("~/NAS_2/setup_info.txt", "w")
FileNotFoundError: [Errno 2] No such file or directory: '~/NAS_2/setup_info.txt'

如果我使用下面的代码,Python似乎很乐意打开这个文件。

>>> os.chdir("NAS_2")
>>> file_object  = open("setup_info.txt", "w")

显然,这是Python 101的东西,但我不明白为什么打开文件需要两个步骤,而且我不必担心在脚本中使用chdir的任何副作用。有没有办法将路径包含在打开命令中,或者我一直在使用它?

提前感谢您提供的任何帮助。

如果我理解的话,您的问题是您的python无法定位/完成相对路径。如果是这样,并且"home/pi"指向文件系统根目录中名为"pi"的目录,那么您可能需要:

import os
dir_path = os.path.join(os.path.expanduser('~'),'pi','NAS_S')
file_path = os.path.join(dir_path,'setup_info.txt')

或者整个路径看起来是什么样子,而不是:

dir_path = "~/NAS_S"
file_path = "~/NAS_S/setup_info.txt"

如果这有效,那是因为Python不知道如何处理路径开头的"~"。和/或您的python脚本/实例没有在根目录下运行。

或者,您可以使用glob

import glob, os
file_name = 'blah.ext'
glob.glob(os.path.join(os.path.expanduser('~'),'*blah.ext')) ## a list of files that match the search pattern

要了解更多关于glob的信息,请参阅上面的文档,以及fnmatch的文档,了解更多关于模式语法的信息

相关内容

  • 没有找到相关文章

最新更新