我一直对Python中的目录遍历问题感到困惑,并且有一种我很好奇的情况:我有一个文件,我想要访问的目录基本上与我当前所在的目录平行。给定此目录结构:
\parentDirectory
\subfldr1
-testfile.txt
\subfldr2
-fileOpener.py
我正在尝试在fileOpener.py中编写脚本,以脱离subfldr2,进入subfldr1,然后在testfile.txt上调用一个open()。
在浏览stackoverflow时,我看到人们使用os
和os.path
来实现这一点,但我只在脚本原始目录下的子目录中找到了有关文件的示例。
在做这件事时,我意识到我可以将脚本重新定位到subfldr1中,然后一切都会很好,但我的好奇心激起了我对如何实现这一点的好奇。
编辑:这个问题特别适用于Windows机器,因为我不知道驱动器号和反斜杠是如何影响这个问题的。
发布于 2018-07-08 06:45:41
from pathlib import Path
data_folder = Path("source_data/text_files/")
file_to_open = data_folder / "raw_data.txt"
f = open(file_to_open)
print(f.read())
发布于 2015-09-09 12:01:38
这适用于回答时,即9月1日。2015年
import os
import os.path
import shutil
您可以找到当前目录:
d = os.getcwd() #Gets the current working directory
然后将目录向上更改一个:
os.chdir("..") #Go up one directory from working directory
然后,您可以获得一个以上目录的所有目录的tupple/list:
o = [os.path.join(d,o) for o in os.listdir(d) if os.path.isdir(os.path.join(d,o))] # Gets all directories in the folder as a tuple
然后,您可以搜索所需目录的元组,并打开该目录中的文件:
for item in o:
if os.path.exists(item + '\\testfile.txt'):
file = item + '\\testfile.txt'
然后你可以用完整的文件路径' file‘来做stuf
发布于 2018-11-03 01:42:32
这是一个非常古老的问题,但我认为它会帮助正在学习python的新手排成一行。如果您使用的是Python 3.4或更高版本,则pathlib库附带默认发行版。
要使用它,只需使用正斜杠将路径或文件名传递给一个新的Path()对象,它就会处理剩下的部分。要指示该路径是一个原始字符串,请将r
放在包含实际路径的字符串前面。
例如,
from pathlib import Path
dataFolder = Path(r'D:\Desktop dump\example.txt')
来源:The easy way to deal with file paths on Windows, Mac and Linux
https://stackoverflow.com/questions/32470543
复制相似问题