【发布时间】:2015-06-29 03:37:48
【问题描述】:
我有一个充满播放列表文件的目录,每个播放列表如下所示:
#EXTM3U
#EXTINF:116,VME MidSeal
V:\Eagle Presentation\VME_MidSeal.wmv
#EXTINF:0,IMG 1061
\Users\cla5598\Pictures\house\IMG_1061.JPG
#EXTINF:0,IMG 1062
\Users\cla5598\Pictures\house\IMG_1062.JPG
#EXTINF:0,IMG 1067
\Users\cla5598\Pictures\house\Directory\IMG_1067.JPG
#EXTINF:0,IMG 1068
首先我需要用新目录替换目录...例如
\Users\cla5598\Pictures\house\ change to /New/Pictures/
然后我需要将任何其他“\”更改为“/”,因为还有其他子目录
到目前为止,我已经让第一部分工作得很好......但是我遇到了“\”到“/”部分的问题......
到目前为止,我有这个,但最后一部分出现错误:
import os
import fileinput
file_list=[]
for file in os.listdir("D:\Users\cla5598\Documents\Aptana Studio 3 Workspace\Playlist_Convert"):
if file.endswith(".m3u8"):
file_list.append(file)
print file_list
for i in file_list:
f1 = open(i, "r")
f2 = open("D:\Users\cla5598\Documents\Aptana Studio 3 Workspace\Playlist_Convert\\new\\" + "Pi-" + i, "w+")
for line in f1:
f2.write(line.replace("\Users\cla5598\Pictures\house\\", "/New/Pictures/"))
f1.close()
f2.close()
file_list_new=[]
for file in os.listdir("D:\Users\cla5598\Documents\Aptana Studio 3 Workspace\Playlist_Convert\\new"):
if file.endswith(".m3u8"):
file_list_new.append(file)
print file_list_new
for b in file_list_new:
f3 = fileinput.input(b, inplace=1)
for line in f3:
line.replace("\\", "/")
f3.close()
这是我得到的错误:
['list1.m3u8', 'list2.m3u8']
['Pi-list1.m3u8', 'Pi-list2.m3u8']
Traceback (most recent call last):
File "D:\Users\cla5598\Documents\Aptana Studio 3 Workspace\Playlist_Convert\Playlist_Convert.py", line 30, in <module>
for line in f3:
File "C:\Python27\lib\fileinput.py", line 252, in next
line = self.readline()
File "C:\Python27\lib\fileinput.py", line 321, in readline
os.rename(self._filename, self._backupfilename)
WindowsError: [Error 2] The system cannot find the file specified
【问题讨论】:
-
您遇到什么错误?请完整追溯
-
你的操作系统是什么?另外,为什么要使用 FileInput?你知道你可以在字符串中使用“r”前缀(r=raw),这样就不需要使用双“\”了吗?例如:
r"I'm a raw string so this \n is not a new-line" -
嗯,播放列表最初是在 Windows 下创建的……但我正在为我的 Linux raspberry pi 转换它们……不,我不知道“r”…… . 我正在使用文件输入,因为那是我唯一能想到使用的东西
-
好的,我想我看到了这个问题,但不知道如何解决它......新的播放列表文件位于名为“new”的子目录中,因此无法找到它们我猜?
标签: python file search text replace