【发布时间】:2021-07-07 16:08:17
【问题描述】:
我使用 os.listdir() 遍历了我的目录,我有一些文件有扩展名,有些没有。如何在目录中搜索以查找并列出所有没有扩展名的文件。我不想列出所有这些,只是那些没有 .pub 扩展名的?
【问题讨论】:
-
所以您可以使用
if not what_ever.endswith('.pub')进行检查 -
你可以过滤掉没有
.pub子字符串的路径
我使用 os.listdir() 遍历了我的目录,我有一些文件有扩展名,有些没有。如何在目录中搜索以查找并列出所有没有扩展名的文件。我不想列出所有这些,只是那些没有 .pub 扩展名的?
【问题讨论】:
if not what_ever.endswith('.pub')进行检查
.pub子字符串的路径
import glob
files = glob.glob('YourDirectoryPath/*[!.pub]')
这是python文档中的glob
【讨论】:
假设您有一个名为files 的字符串列表,其中每个字符串都是一个文件路径,那么如果您正在寻找不是.pub 的字符串,您可以检查字符串是否不包含@ 987654323@并打印出来,如:
for file in files:
if ".pub" not in file:
print(file)
如果您使用的是 Linux,出于好奇,您可以通过使用带有一些标准实用程序的 bash 轻松做到这一点,例如:
find -type f -name '*.pub' > non-pub.txt
一步一步我们有:
find,它在大多数基于 Linux 的发行版中都可用;-type f 将只搜索文件,而不是目录;-name '*.pub' 会告诉我们哪些文件以.pub 结尾;> non-pub.txt 会将结果发送到名为 non-pub.txt 的文件中。您可以在 Python 中使用 os 模块来使用它。例如,如果你真的想把它保存在一个文件中而不用它做任何事情,那么使用os.system() 就可以了:
os.system("find -type f -name '*.pub'")
或者,如果您想保留输出并在 Python 中操作结果:
files = os.popen("find -type f -name '*.pub'").read().split("\n")[0:-1]
如果您有带有换行符 \n 作为文件名的文件,这将不起作用,但这是我以前从未见过的事情。
【讨论】: