请教Python问题:'OSError: [Errno 2] No such file or directory'

2012-08-16 14:30:54 +08:00
 ouankou
081911-783-carib-whole_hd1.wmv
这种文件名想必很多人都很熟悉……这几天在写一个脚本,识别当前目录这类文件名,然后连上官网查找发行日期、演员名字和标题,然后改名为:日期+演员+标题.wmv。如果是两个片段,如hd1和hd2,就在尾部分别加上1和2序号。

没有加入双片段识别功能之前,运行很正常,但是加入之后就只能识别改名一个文件,然后就出错退出,直接再次运行还是改完一个文件名后出错退出。调了好久不知道什么问题,请大家帮忙看看是怎么回事,指点一下,谢谢啦!

我用的是OS X 10.8 + Python3。源码中filename是日期+演员+标题,date是日期。re.match('._')那里是我在出错后自己加的,因为看提示好像是先找到了一个'._'开头的文件,然后改名时这文件没了所以出错,但是没什么效果,运行后还是一样的提示。

出错信息如下:
081911-783-carib-whole_hd1.wmv
081911-783
._081911-783-carib-whole_hd1.wmv
081911-783
Traceback (most recent call last):
File "/Users/ouankou/Dropbox/Work/Current/caribrenamer.py", line 42, in <module>
finalname()
File "/Users/ouankou/Dropbox/Work/Current/caribrenamer.py", line 40, in finalname
os.rename(file, filename)
OSError: [Errno 2] No such file or directory

改名部分源代码如下:
def finalname():
for file in os.listdir('.'):
if fnmatch.fnmatch(file, '*' + '-carib' + '*'):
if re.match('.-', file):
break
print (file)
idend = re.compile('-carib')
idpos = idend.search(file)
movieid = file[(idpos.start()-10):idpos.start()]
print (movieid)
filename, date = getinfo(movieid)
if re.search('hd2', file):
for prefile in os.listdir('.'):
if fnmatch.fnmatch(prefile, '*' + date + '*'):
newname = prefile[0:(len(prefile)-4)] + ' 1.wmv'
os.rename(prefile, newname)
filename = filename + ' 2.wmv'
else:
filename = filename + '.wmv'
18262 次点击
所在节点    Python
7 条回复
explon
2012-08-16 15:01:58 +08:00
好程序, 期待
clino
2012-08-16 15:46:09 +08:00
你 catch 一下这个异常(可以不做处理只打印一下相关的错误信息),然后继续处理其他的文件
ouankou
2012-08-16 15:49:11 +08:00
@explon 不知道问题原因,不过跳过这个问题了。

if fnmatch.fnmatch(file, '[!._]*' + '-carib' + '*.wmv'):

加入了新的文件名判定条件,'._'开头的文件不处理。
把这个脚本传到GitHub了,方便的话可以下载试试……
https://github.com/ouankou/Caribrenamer/blob/master/caribrenamer.py
不过还有一点问题是有时双片段文件改名不正常,还不知道原因。即hd2改名加序号2后不会在hd1后面加上序号1。
ouankou
2012-08-16 15:52:22 +08:00
@clino 多谢,我得先去google一下啥叫catch……

修改了一下过滤文件名部分的源代码,现在基本可以工作了。
https://github.com/ouankou/Caribrenamer/blob/master/caribrenamer.py
有时间的话还请帮忙指点一二。
explon
2012-08-16 16:14:55 +08:00
ouankou
2012-08-16 16:20:30 +08:00
@explon 不好意思啊……
我在墙外,没什么问题,刚改了一堆文件。难道这网站被和谐了?要是可以的话挂上vpn或ssh再试试?
explon
2012-08-16 16:25:39 +08:00
@ouankou 嗯, VPN 打开了, 很好很和谐

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/45290

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX