是否从文件中删除文件名并以递归方式打开?是否保存以前的字符串?-python
我有一个关于读取.txt rile并从内部获取字符串以便稍后在代码中使用的问题 如果我有一个名为“file0.txt”的文件,它包含:是否从文件中删除文件名并以递归方式打开?是否保存以前的字符串?-python,python,function,recursion,Python,Function,Recursion,我有一个关于读取.txt rile并从内部获取字符串以便稍后在代码中使用的问题 如果我有一个名为“file0.txt”的文件,它包含: file1.txt file2.txt 其余文件要么包含更多字符串文件名,要么为空 如何保存这两个字符串以供以后使用。我试图做的是: infile = open(file, 'r') line = infile.readline() line.split('\n') 但结果是: ['file1.txt', ''] 我知道readline只读取一行,但我认为
file1.txt
file2.txt
其余文件要么包含更多字符串文件名,要么为空
如何保存这两个字符串以供以后使用。我试图做的是:
infile = open(file, 'r')
line = infile.readline()
line.split('\n')
但结果是:
['file1.txt', '']
我知道readline只读取一行,但我认为通过按return键拆分它,它还可以获取下一个文件字符串
我试图模拟一个文件树,或者显示哪些文件连接在一起,但是现在它只遍历每个.txt文件中的第一个文件字符串
目前我的输出是:
File 1 crawled.
File 3 crawled.
Dead end reached.
我的希望是,不只是递归地抓取第一个文件,它将遍历整个web,但这要追溯到我的问题,即首先不给程序第二个文件名
我不是在问一个具体的答案,只是在正确的方向上推动如何更好地处理文件中的字符串,并能够存储它们而不是1
我目前的代码很难看,但希望它能让人理解我的想法,我会把它贴出来,以供参考
def crawl(file):
infile = open(file, 'r')
line = infile.readline()
print(line.split('\n'))
if 'file1.txt' in line:
print('File 1 crawled.')
return crawl('file1.txt')
if 'file2.txt' in line:
print('File 2 crawled.')
return crawl('file2.txt')
if 'file3.txt' in line:
print('File 3 crawled.')
return crawl('file3.txt')
if 'file4.txt' in line:
print('File 4 crawled.')
return crawl('file4.txt')
if 'file5.txt' in line:
print('File 5 crawled.')
return crawl('file5.txt')
#etc...etc...
else:
print('Dead end reached.')
职能之外:
file = 'file0.txt'
crawl(file)
Readline只从文件中获取一行,因此它的末尾有一个换行符。您需要的是
file.read()
,它将把整个文件作为一个字符串提供给您。使用换行符拆分,您应该拥有所需的内容。还要记住,您需要将行列表保存为新变量,即分配给line.split('\n')
操作。您也可以只使用readlines,它将从文件中获取行列表。将readline
更改为readlines
。而且不需要拆分(\n
),它已经是一个列表了
这是一个教程,您应该使用read()
或readlines()
阅读。e、 g
infile = open(file, 'r')
lines = infile.readlines()
print list(lines)
给予
或
给予
您似乎正在寻找。感谢您的回复,在我更改它之后,它将显示为['file1.txt\n','file2.txt\n']。您可以使用
strip()
从每行中删除\n
。忽略空行也很容易。我不认为你可以从列表中删除?new\u list=[在旧的\u列表中为x删除(x)]
。我在上面发布了这篇文章,但是我没有得到和你一样的结果。我正在接收['file1.txt\n'、'file2.txt\n']。第二种方法不应该发生这种情况。有关如何使用readlines阻止这种情况发生的信息,请参阅
['file1.txt\n', 'file2.txt\n']
infile = open(file, 'r')
lines = infile.read()
print list(lines.split('\n'))
['file1.txt', 'file2.txt']