python-3.x - 在while循环python中从列表中写入多个文本文件:仅获得一个文件
问题描述
我有三份关于导演、电影和演员的名单。导演有一部或多部电影,而一部电影有一名或多名演员。这在列表中用分隔符“#”表示,如下所示:
directors[director1,director2]
movies[director1movie1,director1movie2,#,director2movie1,...]
actors[movie1actor1,movie1actorN,#,movie2actor1,movie2actorN,...]
我正在尝试在 python 中编写文本文件,为每部电影显示如下内容:
John_Wick
Willem_Dafoe
Keanu_Reeves
Bridget_Moynahan
John_Leguizamo
Dean_Winters
Alfie_Allen
Adrianne_Palicki
Michael_Nyqvist
Ian_McShane
Director: David_Leitch_(actor)
Director: Chad_Stahelski
我的代码实现了这一点,但它只为一部电影编写了一个文本文件,尽管代码输出显示它遍历了所有三个列表中的所有项目,并且列表中有两部电影:
代码:
def write_to_TxtFile(self,directorsL,moviesL,actorsL): countMovieL = -1 countActor = -1
for director in directorsL:
countMovieL += 1
print('------------------------ ')
print(director)
while moviesL[countMovieL] != '#' and countMovieL != len(moviesL):
print('------------------------ ' + str(countMovieL))
print(moviesL[countMovieL])
if not(os.path.exists(moviesL[countMovieL] + '.txt')):
with open('{}.txt'.format(moviesL[countMovieL]),'a')as file:
file.write(moviesL[countMovieL] + '\n\n')
countActor += 1
while actorsL[countActor] != '#' and countActor != len(actorsL):
print(actorsL[countActor])
file.write(actorsL[countActor] + '\n')
countActor += 1
file.write('\nDirector: ' + director + '\n')
file.close()
else:
file = open(moviesL[countMovieL] + '.txt','a')
file.write('Director: ' + director+ '\n')
file.close()
countMovieL += 1
if not(file.closed):
file.close()
代码输出: 输出
问题: 始终写入 John Wick 文本文件,但从未写入 John Wick 第 2 章文本文件。这与列表中电影的顺序无关(约翰威克第 2 章在约翰威克之前或之后)。谢谢您的帮助。
解决方案
代码中的所有内容都是正确的,但我没有考虑到电影名称可能包含以下字符之一:[\,/,:,*,?,",<,>,|] 这些可能不会出现在名称中的文本文件。
从字符串中删除所有上述字符并创建所有文件:
for character in notAllowed:
if character in nameX:
nameX = nameX.replace(character,'')
推荐阅读
- javascript - 如何在 Angular 中访问 Json 中的嵌套键值对
- c++ - 使用基地址和偏移量获取变量的地址
- python - (Python) Monkeypatch __new__ 用于 python 中的 int、float、str、list、dict、set 和 module 类型的对象
- android - adb 服务器版本 (41) 与此客户端 (39) 不匹配
- python-3.x - 使用混合 cnn+svm 模型的图像识别
- html - 如何让两个引导卡并排使用媒体查询来响应?
- php - 使用 eloquent 和 SnmpDriver 迁移在 Laravel 中更新具有不同值的多行
- python - Python - 数据帧中第 2、第 3、第 n 大的 idxmax
- wcf - 如何在 WSDL 中为 WCF 服务设置 EndpointReference?
- node-red - 如何创建节点红色流以与 fiware-orion-context-broker 建立连接