Python 获取带有通配符的系统参数
高洛峰
高洛峰 2016-11-08 09:37:06
0
1
839

问题描述

环境:
macOS 10.12
python 2.7

python脚本获取系统参数的方式为python xxx.py argv1 argv2

今天在写脚本的时候,我需要在脚本中获取类似*.txt的参数,我的shell命令为python xxx.py aaa bbb *.txt然而在脚本中实际获取到的是test.txt(运行目录下有个包括该文件在内的多个txt文件),把命令换成:python xxx.py aaa bbb '*.txt'程序就报错了

为什么会是这种情况呢?

给出一些关键代码和目录结构:
test.py

import sys

if __name__ == '__main__':
    file_name_pattern = sys.argv[1]
    print file_name_pattern
    handle(file_name_pattern)

目录结构:

ls ~/Desktoptest_end.txttest_sed1.txttest_sed2.txt

场景一:
运行目录:~/Desktop
命令:python test.py *.txt
结果:test_end.txt

场景二:
相同目录
命令:python test.py '*.txt'
结果:正确运行了。。。

=======分割线========

总结一下,是我自己测试失误,报错是我业务代码的错误,没细看就来提问了
最终的解决方案就是包上引号''后可以正确得到参数,不加参数可能会先进行处理?有知道的同学可以分析一下哈~


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
三叔

因为运行python之前,shell会先把*展开再传给python,这样argv[1]得到的是当前目录的第一个文件(argv[2]第二个,以此类推)。而加了单引号的*, shell会原封不动得传给python, 从而正确处理

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!