Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否从文件中删除文件名并以递归方式打开?是否保存以前的字符串?-python_Python_Function_Recursion - Fatal编程技术网

是否从文件中删除文件名并以递归方式打开?是否保存以前的字符串?-python

是否从文件中删除文件名并以递归方式打开?是否保存以前的字符串?-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只读取一行,但我认为

我有一个关于读取.txt rile并从内部获取字符串以便稍后在代码中使用的问题

如果我有一个名为“file0.txt”的文件,它包含:

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']