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

问题描述

我对Linux和Python还是陌生的,因此我的术语和对环境的理解可能不正确,但是我只是试图在网络共享上打开文件,似乎无法正确使用。

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

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的东西,但是我不明白为什么要花2个步骤打开文件,我也不必担心在脚本中使用chdir的副作用。有什么方法可以在open命令中包含该路径,还是我被卡住了?

在此先感谢您提供的帮助。

解决方法

据我了解,您的问题是您的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的文档,以获取有关模式语法的更多信息

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...