如果我有一个已打开的文件,是否有一个
os
调用可以获取完整路径作为字符串?f = open('/Users/Desktop/febROSTER2012.xls')
我如何从f
中获取"/Users/Desktop/febROSTER2012.xls"
?
os
调用可以获取完整路径作为字符串?f = open('/Users/Desktop/febROSTER2012.xls')
我如何从f
中获取"/Users/Desktop/febROSTER2012.xls"
?
这里的关键是打开文件后代表它的 f
对象的 name
属性。你可以像这样获取它:
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
这有帮助吗?
tempfile.TemporaryFile(mode='w', prefix='xxx', suffix='.txt')
创建的文件无法正常工作!请检查代码。 - Victortempfile
模块的文档,特别是tempfile.NamedTemporaryFile
。该文档位于您提到的tempfile.TemporaryFile
文档的下方,这是用于临时文件的具体情况,在文档中可以看到已经存在解决方案。tempfile.TemporaryFile
不适用于需要读取名称的情况。 - Tadeckf = open('some/relative/path')
,然后更改工作目录,例如 os.chdir('somewhere/esle')
,那么 f.name
将不会相应地更新,并且在当前工作目录中将没有意义。 - user986730f.name
并不会更改,而文件处理程序仍将指向现在位于不同名称下的文件。严格地说,f.name
不一定返回当前文件名。(至少在我的GNU/Linux发行版中是这样的)。 - Bastian我遇到了完全相同的问题。如果你使用的是相对路径,os.path.dirname(path) 只会返回相对路径。os.path.realpath 可以解决这个问题:
>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
f.name
不会更改,而文件处理程序仍将指向现在位于不同名称下的文件。 (至少在我的 GNU / Linux 发行版中是这种情况)。因此,严格来说,f.name
不一定返回当前文件名。 - Bastianname
可能是类似于 <stdin>
的东西。 - Timmmm如果你只想获取目录名而不需要文件名,那么可以使用Python的os
模块以以下常规方式完成。
>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
通过这种方式,您可以获取目录结构。
f = open('febROSTER2012.xls')
,则会返回一个空字符串。如何获取完整路径? - NZDfilepath = os.path.abspath(f.name)
os.path.realpath(f.name)
。来源:https://dev59.com/JGkw5IYBdhLWcg3w8fFJ#38867035 - Charlie Parker