加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

如何在Windows cmd中传递像* .txt这样的通配符参数

发布时间:2020-12-14 03:54:15 所属栏目:Windows 来源:网络整理
导读:我的目录树: test/|_____ 1.txt content: 1_line1n1_line2|_____ 2.txt content: 2_line1n2_line2|_____ test_fileinput.py 我的Python脚本: import fileinputimport sysfor line in fileinput.input(sys.argv[1:]): print(fileinput.filename(),fileinp
我的目录树:

test/
|_____ 1.txt   content: 1_line1n1_line2
|_____ 2.txt   content: 2_line1n2_line2
|_____ test_fileinput.py

我的Python脚本:

import fileinput
import sys

for line in fileinput.input(sys.argv[1:]):
     print(fileinput.filename(),fileinput.filelineno(),line)

首先我在Linux上尝试过,因为你看它完美无瑕:

$python3 test_fileinput.py *.txt
1.txt 1 1_line1

1.txt 2 1_line2
2.txt 1 2_line1

2.txt 2 2_line2

但在Windows上:

当然我可以做python test_fileinput.py 1.txt 2.txt,但我想知道有没有办法在Windows上传递* .txt?谢谢.

解决方法

您可以使用glob模块,它提供了一种独立于平台的通配符匹配方式.例如,glob(‘* .txt’)将返回当前目录中所有txt文件的列表.

import fileinput
import sys
from glob import glob

for line in fileinput.input(glob(sys.argv[1]):
     print(fileinput.filename(),line)

如果要保留可以指定多个输入的行为(以便执行python test_fileinput.py * .txt * .csv other.md将是有效行为),您可以修改以下代码:

import fileinput
import sys
from glob import glob

all_files = [f for files in sys.argv[1:] for f in glob(files)]

for line in fileinput.input(all_files):
     print(fileinput.filename(),line)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读