python - 制作一个文件搜索程序,它接受带有 sys.argv 的单个正则表达式。

标签 python regex glob sys

我需要制作一个完全符合标题所述的程序。我需要我的程序搜索所有当前文件和所有子目录以查看是否有任何文件与模式匹配。如果有任何文件与该模式匹配,则该文件的完整路径名应打印在屏幕上。

我已经完成了其中的一些,但是有些部分可能没有意义,因为我从类里面给我的示例中复制并粘贴了一些部分:

#!/usr/bin/env python

import re, glob, sys, os
if (len(sys.argv) < 2):
        print("You need an argument.")
        sys.exit(0)

var = sys.argv(1)

#re.search(var,

data = os.walk(".")
for tup in data:
        dirname = tup[0]
        dirlist = tup[1]
        dirlist = tup[2]

        for file in filelist:
                fullname = os.path.join(dirname, file)
                username = owner(fullname)
                if re.data:
                print(os.path.abspath(os.path.join(username, fullname)))

基本上,当我在 Linux 中运行该程序时,我需要键入程序的名称,然后紧接着输入一个参数。该参数是我要搜索的文件的名称。因此,如果我输入“./lab7.py .txt”,我应该期望程序返回任何 .txt 文件。我仍然是初学者,答案对你们中的一些人来说似乎很明显,但我似乎无法完成使该程序按应有的方式运行所需的最后一步。感谢您提供任何帮助,谢谢。

最佳答案

您的 .txt 参数不是是一个正则表达式,而是一个简单的扩展,因此您不需要正则表达式包。

这是我的版本。因为它可以是扩展名,也可以是文件名的一部分,所以只需使用 in。我还简化了没有意义的 owner() 部分(除此之外你的代码很接近)

import os,sys

if (len(sys.argv) < 2):
        print("You need an argument.")
        sys.exit(0)

var = sys.argv[1]

for root,dirs,files in os.walk("."):
    for f in files:
        if var in f:
            fullname = os.path.join(root, f)
            print(os.path.abspath(fullname))

如果扩展名匹配,则打印完整的文件路径。也适用于子目录。

关于python - 制作一个文件搜索程序,它接受带有 sys.argv 的单个正则表达式。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40597205/

相关文章:

python - 在列表中快速交叉字符串的方法

python - 在其他多项式上评估 numpy 多项式

java - 正则表达式查找文本中标签之间重复标签的单词

bash - bash 通配符行为记录在哪里?

python - 使用 Python 将 DLY 文件转换为 CSV

用于项目列表的 Python,到单个字符串?

python - 通过python分割一个大的csv文件

python - 使用 Mechanize 修改表单

php - 带有大文件的 file_get_contents 和 file_put_contents

python - 删除中间带有大写字母的单词