123456qw 发表于 2020-6-8 23:04:14

渣渣求教

import sys

n = int(sys.argv)
power = 1
i = 0

output = sys.stdout
f = open('out.log', 'w')
sys.stdout = f

while i <= n:
    print(str(i), ' ',str(2*i),' ', str(power))
    power = 2*power
    i += 1

f.close()
sys.stdout = output
print('done!')

n = int(sys.argv)出现问题indexError:list index out of range

Twilight6 发表于 2020-6-8 23:13:03

改成这个试试看?
sys.argv

Stubborn 发表于 2020-6-9 00:43:04

假设我在C盘下有一个test.py文件,代码如下

import sys

print(sys.argv)

直接运行(我用Pycharm)结果是:
['C:/test.py']

在CMD,后面运行<python test.py>:
['C:/test.py']

再次运行<python test.py i love fishc stubbron>:
['C:/test.py', 'i' , 'love', 'fishc', 'stubbron'],

懂??

Stubborn 发表于 2020-6-9 00:46:08

Twilight6 发表于 2020-6-8 23:13
改成这个试试看?

我只能捡漏了{:10_295:}你速度那么快

123456qw 发表于 2020-6-9 09:08:06

Stubborn 发表于 2020-6-9 00:43
假设我在C盘下有一个test.py文件,代码如下




老实说不懂

BIO-张磊 发表于 2020-6-9 19:32:27

本帖最后由 BIO-张磊 于 2020-6-9 19:34 编辑

123456qw 发表于 2020-6-9 09:08
老实说不懂

你明白命令行模式吗?
不明白按照我下面的做

首先windows图标键+R一起按, 出来的搜索框输入cmd,会跳出来一个黑糊糊的界面,这就叫命令行模式。
假如你这个代码文件的保存名字叫 test.py,你记住他的保存路径,比如是D:\test.py
之后你在cmd黑糊糊的命令行里面,先输入 d: 再按回车
你可以发现你就进入了d:开头的一个地方,这就是d盘。
之后你在输入dir按回车,可以看到d盘目录下的所有文件,跟你用鼠标点进D盘看到的是一样的。

这时候假如你的代码内容是
import sys
n = int(sys.argv)
m = sys.argv

print("文件的完整路径是%s" %sys.argv)
print(n)
for i in m:
    print (i)

你继续在命令行模式输入 test.py 1 2 3 4 5 6
可以发现命令模式输出了
文件的完整路径是D:\test.py
1
2
3
4
5
6

所以sys.argv[数字]就是在命令行模式下对你输入的信息进行统计并 保存为一个列表
其中索引0,也就是sys.argv是文件的绝对路径,test.py后面的1 2 3 4 5 6 分别保存在索引1 2 3 4 5 6
所以根据代码,他会打印出 1 2 3 4 5 6
你可以把 1 2 3 4 5 6根据自己的喜好来改改,多试试

这个命令有什么用呢,就是在命令行模式执行你的代码,主要针对脚本
有些情况下,有些人或者linux系统 跟windows系统相对,他们相对某一个文件进行操作
test.py 文件1,这样就比较方便,不用每次都去改文件名
但是在python软件内使用sys.argv[],因为没有输入任何文件,所以是空的,所以你会超出索引范围


满意请采纳
页: [1]
查看完整版本: 渣渣求教