关于函数:从文件中剥离文件名并递归打开? 保存以前的字符串 – PYTHON

Strip file names from files and open recursively? Saving previous strings? - PYTHON

我有一个问题,关于在.txt里阅读和从里面提取字符串,以便以后在代码中使用。

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

1
2
file1.txt
file2.txt

其余文件要么包含更多的字符串文件名,要么为空。

如何保存这两个字符串供以后使用。我试图做的是:

1
2
3
4
infile = open(file, 'r')
line = infile.readline()
line.split('
'
)

但结果是:

1
['file1.txt', '']

我知道readline只读取一行,但我认为通过使用返回键将其拆分,它还可以获取下一个文件字符串。

我试图模拟一个文件树或显示哪些文件连接在一起,但现在它只通过每个.txt文件中的第一个文件字符串。

目前我的输出是:

1
2
3
File 1 crawled.
File 3 crawled.
Dead end reached.

我的希望是,它不只是递归地爬行第一个文件,而是通过整个网络,但这又回到了我的问题,即首先不给程序第二个文件名。

我并不是要求一个具体的答案,而是向正确的方向推进,以更好地处理文件中的字符串,并能够存储这两个字符串而不是1。

我目前的代码很难看,但希望它能让我理解这个想法,我会把它贴出来,以参考我正在努力实现的目标。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def crawl(file):

    infile = open(file, 'r')
    line = infile.readline()
    print(line.split('
'
))

    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.')

在功能之外:

1
2
file = 'file0.txt'
crawl(file)


使用read()readlines()将有所帮助。例如

1
2
3
infile = open(file, 'r')
lines = infile.readlines()
print list(lines)

给予

1
2
3
['file1.txt
'
, 'file2.txt
'
]

1
2
3
4
infile = open(file, 'r')
lines = infile.read()
print list(lines.split('
'
))

给予

1
['file1.txt', 'file2.txt']


readline改为readlines。不需要拆分(
),它已经是一个列表了。

以下是你应该阅读的教程


readline只从文件中获取一行,因此在文件末尾有一个换行符。您需要的是file.read(),它将把整个文件作为一个字符串提供给您。用换行符拆分它,你应该得到你需要的。还要记住,您需要将行列表保存为一个新变量,即分配给您的line.split('
')
操作。您也可以使用readlines,它将从文件中获得一个行列表。