首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在另一个目录中打开文件(Python)

在另一个目录中打开文件(Python)
EN

Stack Overflow用户
提问于 2015-09-09 11:42:38
回答 4查看 183.7K关注 0票数 30

我一直对Python中的目录遍历问题感到困惑,并且有一种我很好奇的情况:我有一个文件,我想要访问的目录基本上与我当前所在的目录平行。给定此目录结构:

代码语言:javascript
复制
\parentDirectory
    \subfldr1
        -testfile.txt
    \subfldr2
        -fileOpener.py

我正在尝试在fileOpener.py中编写脚本,以脱离subfldr2,进入subfldr1,然后在testfile.txt上调用一个open()。

在浏览stackoverflow时,我看到人们使用osos.path来实现这一点,但我只在脚本原始目录下的子目录中找到了有关文件的示例。

在做这件事时,我意识到我可以将脚本重新定位到subfldr1中,然后一切都会很好,但我的好奇心激起了我对如何实现这一点的好奇。

编辑:这个问题特别适用于Windows机器,因为我不知道驱动器号和反斜杠是如何影响这个问题的。

EN

回答 4

Stack Overflow用户

发布于 2018-07-08 06:45:41

代码语言:javascript
复制
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())
票数 12
EN

Stack Overflow用户

发布于 2015-09-09 12:01:38

这适用于回答时,即9月1日。2015年

代码语言:javascript
复制
import os
import os.path
import shutil

您可以找到当前目录:

代码语言:javascript
复制
d = os.getcwd() #Gets the current working directory

然后将目录向上更改一个:

代码语言:javascript
复制
os.chdir("..") #Go up one directory from working directory

然后,您可以获得一个以上目录的所有目录的tupple/list:

代码语言:javascript
复制
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

然后,您可以搜索所需目录的元组,并打开该目录中的文件:

代码语言:javascript
复制
for item in o:
    if os.path.exists(item + '\\testfile.txt'):
    file = item + '\\testfile.txt'

然后你可以用完整的文件路径' file‘来做stuf

票数 10
EN

Stack Overflow用户

发布于 2018-11-03 01:42:32

这是一个非常古老的问题,但我认为它会帮助正在学习python的新手排成一行。如果您使用的是Python 3.4或更高版本,则pathlib库附带默认发行版。

要使用它,只需使用正斜杠将路径或文件名传递给一个新的Path()对象,它就会处理剩下的部分。要指示该路径是一个原始字符串,请将r放在包含实际路径的字符串前面。

例如,

代码语言:javascript
复制
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

(unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32470543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档