dbi*_*hop 13 python windows os.path
我一直对Python中的目录遍历问题感到困惑,并且有一种我很好奇的情况:我有一个文件,我想在一个与我当前所在的目录基本平行的目录中访问.鉴于此目录结构:
\parentDirectory
\subfldr1
-testfile.txt
\subfldr2
-fileOpener.py
Run Code Online (Sandbox Code Playgroud)
我试图在fileOpener.py中编写脚本以退出subfldr2,进入subfldr1,然后在testfile.txt上调用open().
从浏览stackoverflow,我看到人们使用os并os.path完成此操作,但我只找到了关于脚本源下的子目录中的文件的示例.
在这方面,我意识到我可以将脚本重新定位到subfldr1然后一切都会很好,但我的好奇心是如何实现这一点.
编辑:这个问题特别适用于Windows机器,因为我不知道驱动器字母和反斜杠将如何影响到这一点.
Jar*_*key 16
如果你知道文件的完整路径,你可以做类似的事情.但是,如果你直接提问与相对路径有关,我不熟悉并且必须进行研究和测试.
path = 'C:\\Users\\Username\\Path\\To\\File'
with open(path, 'w') as f:
f.write(data)
Run Code Online (Sandbox Code Playgroud)
编辑:
这是一种相对而不是绝对的方式.不确定这是否适用于Windows,您将不得不测试它.
import os
cur_path = os.path.dirname(__file__)
new_path = os.path.relpath('..\\subfldr1\\testfile.txt', cur_path)
with open(new_path, 'w') as f:
f.write(data)
Run Code Online (Sandbox Code Playgroud)
编辑2:一个快速说明__file__,这在交互式解释器中不起作用,因为它是以交互方式运行而不是从实际文件运行.
Roa*_*oan 10
这在回答时适用,2015 年 9 月
import os
import os.path
import shutil
Run Code Online (Sandbox Code Playgroud)
您找到当前目录:
d = os.getcwd() #Gets the current working directory
Run Code Online (Sandbox Code Playgroud)
然后你改变一个目录:
os.chdir("..") #Go up one directory from working directory
Run Code Online (Sandbox Code Playgroud)
然后你可以获得所有目录的元组/列表,对于一个目录:
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
Run Code Online (Sandbox Code Playgroud)
然后你可以在元组中搜索你想要的目录并打开该目录中的文件:
for item in o:
if os.path.exists(item + '\\testfile.txt'):
file = item + '\\testfile.txt'
Run Code Online (Sandbox Code Playgroud)
然后你可以用完整的文件路径'file'来做stuf
小智 10
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())
Run Code Online (Sandbox Code Playgroud)
这是一个非常古老的问题,但我认为它会帮助我学习 python 的新手。如果您有 Python 3.4 或更高版本,则 pathlib 库随附默认发行版。
要使用它,您只需使用正斜杠将路径或文件名传递到新的 Path() 对象中,然后它会处理其余部分。要指示路径是原始字符串,请将r实际路径放在字符串前面。
例如,
from pathlib import Path
dataFolder = Path(r'D:\Desktop dump\example.txt')
Run Code Online (Sandbox Code Playgroud)
来源:在 Windows、Mac 和 Linux 上处理文件路径的简单方法
(unicode 错误)“unicodeescape”编解码器无法解码位置 2-3 中的字节:截断的 \UXXXXXXXX 转义
| 归档时间: |
|
| 查看次数: |
68048 次 |
| 最近记录: |