我需要Python中的命令才能在计算机上的某处查找数据(txt)。
我希望能给您示例代码,但是我没有。
答案 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)
您可以结合使用os
,shlex
和subprocess
来实现以下目的:
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")