从另一个目录中查找数据(.txt),并将名称保存在列表中

时间:2018-07-18 10:48:47

标签: python linux shell

我需要Python中的命令才能在计算机上的某处查找数据(txt)。

我希望能给您示例代码,但是我没有。

3 个答案:

答案 0 :(得分:0)

您可以使用subprocess.check_output()在目录上运行Linux find命令并收集以 .txt 结尾的文件:

from subprocess import check_output

# shell command
# remove -printf "%f\n" if you want full paths to files
command = 'find <PATH> -type f -name *.txt -printf "%f\n"'

# get contents returned from command
command_str = check_output(command, shell=True).decode('utf-8')

# split string on newlines to get list of filenames
files = command_str.split()

<PATH>是包含文件的目录的相对/绝对路径。

注意:由于check_output()bytes编码内容,因此您需要使用bytes.decode()将其解码为字符串。然后,您可以拆分此字符串以将文件名收集到一个列表中。

如果您想了解有关find的更多信息,请在终端中输入man find

答案 1 :(得分:0)

您可以结合使用osshlexsubprocess来实现以下目的:

import os
from subprocess import PIPE, Popen
import shlex

#Change directory to where you want to start looking
os.chdir("the_path_from where_you_want_to_start_looking")

#Shell command for searching for .txt files
command = 'find . -name "*.txt"'

#Run command in shell
args = shlex.split(command)
process = Popen(args, stdout=PIPE, stderr=PIPE)

#Get output of command
result = process.communicate()[0]

#result is bytes object so need to parse it to list
list_of_files = str(result).replace("b'", "").split("\\n")

#list_of_files will be desired list

希望这会有所帮助。

答案 2 :(得分:0)

如果您知道包含txt文件的目录的路径,则可以使用glob

import glob
file_list = glob.glob("<path_to_your_directory>/*.txt")