Python 如何放置'';在我们放入os.listdir参数的路径中?

Python 如何放置'';在我们放入os.listdir参数的路径中?,python,listdir,Python,Listdir,我使用os.listdir函数(如您所想)列出文件夹中的文件夹和文件。正如文档所说,“它不包括特殊条目'”和“..”,即使它们存在于目录中。” 我有一个问题,因为我的代码是要发布在GitHub上的,我不想让每个人都看到我的整个路径,而且,因为他们没有相同的路径,代码对他们不起作用 所以我想知道如何避开这个问题 谢谢 PS:我的文件夹看起来像这样:。python代码在py文件夹中,我要访问的文件夹和文件在Dico文件夹中。如果您在py文件夹中,并且您想列出Dico中的文件,这是与py相邻的文件夹,

我使用
os.listdir
函数(如您所想)列出文件夹中的文件夹和文件。正如文档所说,“它不包括特殊条目'”和“..”,即使它们存在于目录中。”

我有一个问题,因为我的代码是要发布在GitHub上的,我不想让每个人都看到我的整个路径,而且,因为他们没有相同的路径,代码对他们不起作用

所以我想知道如何避开这个问题

谢谢


PS:我的文件夹看起来像这样:。python代码在
py
文件夹中,我要访问的文件夹和文件在
Dico
文件夹中。

如果您在
py
文件夹中,并且您想列出
Dico
中的文件,这是与
py
相邻的文件夹,请使用以下命令:

os.listdir('../Dico')

你误解了文档。文档中说,特殊条目
'.
'..
不会显示在
os.listdir的输出中

文档并没有说明如果
os.listdir
的参数包含
,则会发生任何特殊或异常情况。您不需要使用绝对路径或任何其他解决方法。如果您想要工作目录旁边名为
Dico
的目录的内容列表,您可以使用

os.listdir('../Dico')

您可以创建相对于模块的路径:

import os

path = os.path.join(os.path.split(__file__)[0], '..', 'Dico')
os.listdir(path)
如果您正在为Python 3.7+准备软件包,还可以使用:


我假设您的文件结构如下所示

folder---
    py---
  dico---
我还假设您尝试了
os.listdir(“../dico”)
,并得到了一个类似于此
FileNotFoundError:[Errno 2]的错误:没有这样的文件或目录:


但是让我向你保证代码是正确的。错误的原因可能如下所示。
如果您是从IDE运行代码,请检查终端路径。
它将是
/yoursystempath/folder/
而不是
/yoursystempath/folder/py
。这是一个常见的错误,因为大多数IDE在项目文件夹级别启动python解释器。不在脚本级别。

在python中处理路径的最佳方法是在py文件夹下的一个脚本文件中创建一个
rootdir
变量,并根据需要导入它

从操作系统导入列表目录,路径
#这将返回当前文件夹的路径,而不管解释器从何处启动
curdir=path.abspath(path.join(path.abspath(_文件__),path.pardir))
#这将返回rootdir路径,假设它是向上一级的。
#在您的情况下,它将返回文件夹的abs路径
rootdir=path.abspath(path.join(curdir,path.pardir))
#现在使用rootdir引用文件结构中的任何文件
#要访问dico,请使用以下命令
dicoPath=path.abspath(path.join(rootdir,“dico”))
#现在将listdir与可变dicoPath一起使用
listdir(迪科)
现在,如果要在py文件夹下的其他脚本中使用rootdir变量,请使用以下命令

from yourFileWhichHasTherootdir import rootdir

您能提供一个示例输入(您拥有的)和所需输出(您想要的)吗?您的意思是什么?
os.listdir('../Dico')
有什么问题?@MachineLearner这很难解释,而且我不是以英语为母语的人,所以我想我不能解释。@a_guest我在评论GrandPhuba的答案时出错了。这不起作用。我收到以下错误:
FileNotFoundError:[WinError 3]找不到指定的路径:“../Dico”
@Bethoth:该错误与您认为它的作用无关。该错误表示您根本没有在
py
目录下运行。@user2357112supportsMonica我这样运行文件:
&“C:/ProgramFiles(x86)/Microsoft Visual Studio/Shared/Python37_64/python.exe”C:/Users/ROMAIN/OneDrive/Projets/Dico Abrevisions et acronymes/py/recherche.py
(这由Visual Studio代码自动运行python)。我看不出我做错了什么。而且,当我使用绝对路径时,我没有得到错误。@Bethoth thecwd(当前工作目录)不是脚本所在的位置,而是运行脚本的位置。由于路径是相对于脚本的,如果不在脚本所在的位置运行,则可能会出现错误。绝对路径不会出现错误,因为它是绝对路径,所以总是有效的…感谢您向我指出它。不过,我不明白为什么我的code在我放置绝对路径时起作用,而在我不放置绝对路径时不起作用。@Bethoth:因为您没有在您认为自己所在的位置运行,所以相对路径相对于一个与您想要的完全不同的目录。@user2357112supportsMonica是正确的。@Bethoth,尝试运行
os.getcwd()
首先要确定您当前的工作目录是什么。今天下午我会试试。我会告诉您的。
from yourFileWhichHasTherootdir import rootdir