为了得到预期的结果,在Windows中运行python脚本时,我很难发现自己做错了。你知道吗
我有一个目录,有list1.txt、list2.txt、list3.txt、list4.txt和list5.txt。每个列表都包含单独的行字符串,这些字符串是唯一的,例如list1.txt将在单独的行中分别有项1、项2、项3、项4、和项5作为值。然后list2.txt将在单独的行中显示item6-item10,以此类推。你知道吗
我需要做的是,对于这个目录中的每个文本文件,列出list1中的每个值直到完成,然后列出list2中的每个值,然后列出list3,依此类推直到完成最后一个列表。你知道吗
这是一个链接到我的结果的图片和注释:https://i.imgur.com/YBxQUqi.png
我有下面的代码,但结果不是我所期望的,我有一个非常困难的时间来确定我做错了什么。你知道吗
def my_range(start, end, step):
while start <= end:
yield start
start += step
for x in my_range(1, 5, 1):
import os
rootdir = os.getcwd()
fis = rootdir + "\list\list" + str(x) + ".txt"
files = open(fis,'rU')
lines = files.readlines()
print(lines)
print(fis)
for line in lines:
print("Item = " + line)
我需要从数据库中的每个文件读取结果列表.txt文件和每个文件中的每个值,而不仅仅是最后一个文件。我认为我没有正确地进行for循环嵌套,我就是搞不清楚。我还测试了向函数传递参数和定义函数来实现这一点,我完全用软管冲洗了脚本。你知道吗
请任何人帮助我,当你能解决这个问题,我不能明白,只是拉我的头发从头上。你知道吗
看起来你的缩进消失了:
不过,你要说的是这是一种非常迂回的方式,我建议你这样做:
使用
os.path.join
创建文件的路径。我做了一些改进,我将在下面讨论。你知道吗我也看不出让自己变得不可忍受有什么意义。为什么不在开头简单地使用
range(1, 5)
?下一步:使名称具有描述性。现在看来这似乎并不重要,但一周后你会问自己“我说的这个fis到底是什么意思”。任何IDE都会使使用长名称更容易,而且,相信我,编写data_file_name
或类似的东西比dfs
等更令人愉快。不要在循环中导入任何内容。它降低了效率。而且rootdir
变量可以声明一次。你知道吗第二个
for
循环需要是主循环的子循环。另外,不要每次循环都import os
,只做一次。您的代码应该如下所示:但是,我要指出的是,您应该改用
with open(fid,'rU') as f:
方法,因为如果代码出错或崩溃,该方法将解除文件的锁定。你可以这样做:相关问题 更多 >
编程相关推荐