【发布时间】:2012-03-03 01:05:41
【问题描述】:
如果我有一个打开的文件,是否有一个os 调用来获取完整路径作为字符串?
f = open('/Users/Desktop/febROSTER2012.xls')
来自f,我如何获得"/Users/Desktop/febROSTER2012.xls"?
【问题讨论】:
标签: python
如果我有一个打开的文件,是否有一个os 调用来获取完整路径作为字符串?
f = open('/Users/Desktop/febROSTER2012.xls')
来自f,我如何获得"/Users/Desktop/febROSTER2012.xls"?
【问题讨论】:
标签: python
这里的关键是代表打开文件的f对象的name属性。你是这样理解的:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
有帮助吗?
【讨论】:
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')创建的文件不起作用!
tempfile 模块的文档,尤其是tempfile.NamedTemporaryFile,就在您提到的tempfile.TemporaryFile 的文档下方。这是临时文件的特定情况,如文档中所见,已经存在解决方案。 tempfile.TemporaryFile 不打算用于您想阅读名称的情况。
f = open('some/relative/path') 这样的相对路径,然后像os.chdir('somewhere/esle') 这样更改工作目录,那么f.name 将不会相应更新,并且在您的当前工作目录。
我遇到了完全相同的问题。如果您使用的是相对路径 os.path.dirname(path) 将只返回相对路径。 os.path.realpath 成功了:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
【讨论】:
os.path.realpath 将返回“~/text.txt”而不是“~/Documents/text”。 txt'。
f.name 在重命名文件时不会更改,而文件处理程序仍将指向现在位于不同名称下的文件。 (至少在我的 gnu/linux 发行版中是这样的)。所以严格来说f.name不一定返回当前文件名
name 可能类似于<stdin>。
如果您只想获取目录名而不需要随附的文件名,那么您可以使用os Python 模块以以下常规方式完成。
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
这样你就可以掌握目录结构了。
【讨论】:
f = open('febROSTER2012.xls'),这将返回一个空字符串。如何才能到达完整路径?
你也可以这样得到。
filepath = os.path.abspath(f.name)
【讨论】: