如何提供文件名作为命令行参数
import sysNUM_LINES = 10
if len(sys.argv) != 2:
print('Provide the file name as a command line argument.')
quit()
try:
inf = open(sys.argv, "r")
line = inf.readline()
count = 0
while count < NUM_LINES and line != '':
line = line.rstrip()
count += 1
print(line)
line = inf.readline()
inf.close()
except IOError:
print('An error occurred while accessing the file.')
程序代码如上,总是运行第六行,想知道怎么样将命令行参数添加到py文件里,是在同一个文件夹下创建一个文本文档还是设置路径? 本帖最后由 kogawananari 于 2021-10-30 12:12 编辑
import sys
from pathlib import Path
print('当前目录是',Path.cwd())
NUM_LINES = 10
if len(sys.argv) != 2:
print('格式 python文件+空格+文件名')
quit()
try:
inf = open(Path.cwd()/Path(sys.argv), "r")
line = inf.readline()
count = 0
while count < NUM_LINES and line != '':
line = line.rstrip()
count += 1
print(line)
line = inf.readline()
inf.close()
except IOError:
print('文件名或路径不对 可以尝试cd到要读取的目标文件所在目录') import sys
NUM_LINES = 10
if len(sys . argv) < 2 :
print('Provide the file name as a command line argument.')
else:
try:
inf = open(sys . argv , 'rt')
txt = list(inf)
inf . close()
m = NUM_LINES if len(txt) > NUM_LINES else len(txt)
for i in range(m):
print(txt . rstrip())
except IOError:
print('An error occurred while accessing the file.')
运行实况:
D:\00.Excise\Python>python x.py data.txt
从明天起,做一个幸福的人
喂马、劈柴,周游世界
从明天起,关心粮食和蔬菜
我有一所房子,面朝大海,春暖花开
D:\00.Excise\Python>python x.py xy.txt
An error occurred while accessing the file.
D:\00.Excise\Python> 你运行的方式不对,既然你要从命令行提供路径给py文件,那就要从命令行运行它:
在你的源代码目录打开cmd,输入
python 你的源代码.py 你需要处理的文件的文件路径
比如python test.py f:/1/t.txt jackz007 发表于 2021-10-30 12:21
运行实况:
我不知道sys.argv所判断的文件储存在哪里 hrpzcf 发表于 2021-10-30 12:24
你运行的方式不对,既然你要从命令行提供路径给py文件,那就要从命令行运行它:
在你的源代码目录打开cmd ...
可以在代码里边标注文件的位置吗 1005663861 发表于 2021-10-30 13:38
可以在代码里边标注文件的位置吗
你可能还没明白命令行参数是什么意思
比如你在命令行中这样运行你的源代码:
python test.py 123 abc aks23 666
那你的源代码中sys.argv的值就是[‘test.py’, '123', 'abc', 'aks23', '666']
又比如你在命令行这样运行你的源代码
python test.py f:/1.txt
你的源代码中sys.argv的值就是[‘test.py’, 'f:/1.txt']
里面的
inf = open(sys.argv, "r")就相当于inf = open('f:/1.txt', "r")
jackz007 发表于 2021-10-30 12:21
运行实况:
就是我想知道从什么地方可以传入系统命令参数,而这个参数可以是文本文档吗
本帖最后由 jackz007 于 2021-10-30 14:11 编辑
1005663861 发表于 2021-10-30 14:02
就是我想知道从什么地方可以传入系统命令参数,而这个参数可以是文本文档吗
系统命令参数只的是你在启动脚本时,向操作系统提交的命令行,比如:
python x.py abc.txt
那么,len(sys . argv) == 2,sys . argv == 'x.py',sys . argv == 'abc.txt' 这就是命令行的含义。
你可以用下面的语句把 sys . argv 直接打印出来:
print(sys . argv) jackz007 发表于 2021-10-30 14:07
系统命令参数只的是你在启动脚本时,向操作系统提交的命令行,比如:
那么,sys . ar ...
我知道sys.argv的用法,就比如说这个abc.txt, 它是怎么添加到python x.py的扩展名后边,如何添加 jackz007 发表于 2021-10-30 14:07
系统命令参数只的是你在启动脚本时,向操作系统提交的命令行,比如:
那么,len(sy ...
现在含义我清楚,每次运行的时候len(sys.argv) == 1,的,就是我不知道将txt文件放在什么地方,会使len(sys.argv) == 2 1005663861 发表于 2021-10-30 14:09
我知道sys.argv的用法,就比如说这个abc.txt, 它是怎么添加到python x.py的扩展名后边,如何添加
在 CMD 窗口里,通过键盘输入 1005663861 发表于 2021-10-30 14:09
我知道sys.argv的用法,就比如说这个abc.txt, 它是怎么添加到python x.py的扩展名后边,如何添加
在你的源代码目录打开cmd,输入
jackz007 发表于 2021-10-30 14:13
在 CMD 窗口里,通过键盘输入
图片/无标题.png jackz007 发表于 2021-10-30 14:13
在 CMD 窗口里,通过键盘输入
F:\e\python_file\python_exercise>Python p7_149.py p7_149.txt
Traceback (most recent call last):
File "p7_149.py", line 11, in <module>
line = inf.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 20: illegal multibyte sequence
是语法格式不对吗
1005663861 发表于 2021-10-30 14:16
F:\e\python_file\python_exercise>Python p7_149.py p7_149.txt
Traceback (most recent call last): ...
inf = open(sys.argv, "r")改成inf = open(sys.argv, "r", encoding="utf-8") hrpzcf 发表于 2021-10-30 13:57
你可能还没明白命令行参数是什么意思
比如你在命令行中这样运行你的源代码:
F:\e\python_file\python_exercise>Python p7_149.py p7_149.txt
Traceback (most recent call last):
File "p7_149.py", line 11, in <module>
line = inf.readline()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xab in position 20: illegal multibyte sequence
我运行了,是这种情况 1005663861 发表于 2021-10-30 14:26
F:\e\python_file\python_exercise>Python p7_149.py p7_149.txt
Traceback (most recent call last):
...
看16楼 hrpzcf 发表于 2021-10-30 14:28
看16楼
出问题的使cmd不是python
1005663861 发表于 2021-10-30 14:30
出问题的使cmd不是python
你按照16楼改了源代码再试试不就知道了
页:
[1]
2