从Python中打开文件获取路径

Dav*_*542 100 python

如果我有一个打开的文件,是否有os调用将完整路径作为字符串?

f = open('/Users/Desktop/febROSTER2012.xls')
Run Code Online (Sandbox Code Playgroud)

f,我怎么得到"/Users/Desktop/febROSTER2012.xls"

Tad*_*eck 130

这里的关键是表示打开文件namef对象的属性.你得到它:

>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> f.name
'/Users/Desktop/febROSTER2012.xls'
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

  • @Victor:请阅读`tempfile`模块的文档,特别是对于[`tempfile.NamedTemporaryFile`](http://docs.python.org/2/library/tempfile.html#tempfile.NamedTemporaryFile),就在文档下面对于你提到的`tempfile.TemporaryFile`.这是临时文件的特定情况,并且如文档中所示,已存在解决方案.如果您想要读取名称,则不应使用`tempfile.TemporaryFile`. (16认同)
  • 如果使用open('foo.txt','w')创建文件然后执行f.name,它只为您提供输出foo.txt (11认同)
  • 对于由以下文件创建的文件:`tempfile.TemporaryFile(mode ='w',prefix ='xxx',suffix ='.txt')`不起作用! (4认同)

小智 77

我有完全相同的问题.如果使用相对路径,则os.path.dirname(path)将仅返回相对路径.os.path.realpath可以解决问题:

>>> import os
>>> f = open('file.txt')
>>> os.path.realpath(f.name)
Run Code Online (Sandbox Code Playgroud)

  • 这实际上是真正的答案. (10认同)
  • 这仅在相对文件路径仍然是正确的文件路径时才有效。如果我将目录“~/Documents/”中的文件名指定为“text.txt”,然后将目录更改为“~/”,则“os.path.realpath”将返回“~/text.txt”而不是“~/”文件/text.txt'。 (4认同)

Ali*_*ani 11

如果您只是想获取目录名称并且不需要随附的文件名,那么您可以使用osPython模块以下列传统方式执行此操作.

>>> import os
>>> f = open('/Users/Desktop/febROSTER2012.xls')
>>> os.path.dirname(f.name)
>>> '/Users/Desktop/'
Run Code Online (Sandbox Code Playgroud)

这样您就可以掌握目录结构.


ans*_*ker 7

你也可以这样得到。

filepath = os.path.abspath(f.name)
Run Code Online (Sandbox Code Playgroud)

  • 这会将它附加到当前工作目录,而不是它实际驻留的目录。 (3认同)