python open()如何更改设置文件的名称/标题

时间:2010-07-01 16:14:59

标签: python

如果我用

在python中打开文件(图像)

f = open('/path/to/file.jpg', 'r+')

我有一个函数f.title(),我得到了文件的完整路径。如何将打开的文件名/ repr / title更改为其他内容?

2 个答案:

答案 0 :(得分:2)

您不会使用open更改文件名,这是肯定的。您需要使用os.rename

但是,如果您尝试更改文件在程序中的名称而不是实际的文件名,那么为什么要尝试这样做/那将是什么意思呢?我猜你可以从文件对象中分离缓冲区并将其分配给具有所需标题的新对象,如果你正在使用Python 3(认为你也可以在Python 2(.6)中做到这一点)在Python 2.6 detach对象或其file模块的文档中没有提到io方法,但实际上,我不太明白这一点......

哦等等,如果您只想在其他地方使用文件名,并且不一定需要更改名称本身:

import os.path

f = open('/path/to/file.jpg', 'r+')

print(os.path.basename(f.name))  #don't include the parentheses if you're working in Python 2.6 and not using the right __future__ imports or working in something prior to 2.6

这将输出'file.jpg'。但是,如果blob.filename是自动分配,不确定它是否会对您有所帮助,除非您愿意继承任何类blob的子类...

答案 1 :(得分:0)

它对我不起作用(Python 2.6,在Windows上);我必须使用“名称”属性:

>>> f = open(r'C:\test.txt', 'r+')
>>> f.title()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'file' object has no attribute 'title'
>>> f.name
'C:\\test.txt'

根据the documentation,“name”是只读的。不幸的是,您无法在文件对象上设置任意属性:

>>> f.title = f.name
Traceback (most recent call last):
  File "<console>", line 1, in <module>
AttributeError: 'file' object has no attribute 'title'