如何修改 python 脚本以使用外部文件作为命令行中的输入?
How do I modify a python script to use an external file as the input in the command line?
我对编码很陌生,所以请原谅我问题中的任何行话错误。我想知道如何修改脚本,以便当我键入具有不同文件名的命令行时,它 returns 不同的计算。如果我正确地完成作业,这是预期的结果:
% chmod a+x argv.py
% python Shannon_readfile.py populationA.txt
24.0
1.51309299164
% python Shannon_readfile.py populationB.txt
24.0
0.681610269053
基本上,有文件“Shannon_argv.py”,它看起来像这样:
import sys
import math
N=0
H=0
#Calculate N
for i in P:
a=float(i)
N=N+a
print(N)
#Calculate H
for i in P:
a=float(i)
pa=(a/N)*math.log(a/N)
H=H+pa
print(-H)
我必须通过在“导入数学”行之后创建一个空列表,然后在“H=0”行之后创建一个新列表 P 来修改它。
有人告诉我还有另一个文件 readfile_countline.py,我需要打开并从每一行中取一个值,然后将其添加到列表 P 中,并对所有行重复该操作,但我这样做了不知道这意味着什么,或者在哪里添加等等。我还被告知 L.append(x) 操作会派上用场。
我正在使用 emacs 在 Linux shell 中编辑这些 python 脚本。如果我能尽快得到任何 help/direction,我将不胜感激。谢谢!
要从命令行参数更改您使用的文件,您可以使用 filename = sys.argv[1]
从参数向量中获取文件名。之后,您可以打开文件,读取其内容,并进行所需的处理。假设您的文本文件每行包含一个数值,您可以尝试如下操作:
# Standard library imports.
import math
import sys
# Gets the filename from the command line arguments.
filename = sys.argv[1]
# Reads the data file.
with open(filename, "r") as file:
P = file.readlines()
# Initializes N and H.
N = 0
H = 0
# Calculates N and H.
for i in P:
a = float(i)
N += a
H += (a / N) * math.log(a / N)
# Prints the results.
print(N)
print(-H)
我对编码很陌生,所以请原谅我问题中的任何行话错误。我想知道如何修改脚本,以便当我键入具有不同文件名的命令行时,它 returns 不同的计算。如果我正确地完成作业,这是预期的结果:
% chmod a+x argv.py
% python Shannon_readfile.py populationA.txt
24.0
1.51309299164
% python Shannon_readfile.py populationB.txt
24.0
0.681610269053
基本上,有文件“Shannon_argv.py”,它看起来像这样:
import sys
import math
N=0
H=0
#Calculate N
for i in P:
a=float(i)
N=N+a
print(N)
#Calculate H
for i in P:
a=float(i)
pa=(a/N)*math.log(a/N)
H=H+pa
print(-H)
我必须通过在“导入数学”行之后创建一个空列表,然后在“H=0”行之后创建一个新列表 P 来修改它。
有人告诉我还有另一个文件 readfile_countline.py,我需要打开并从每一行中取一个值,然后将其添加到列表 P 中,并对所有行重复该操作,但我这样做了不知道这意味着什么,或者在哪里添加等等。我还被告知 L.append(x) 操作会派上用场。
我正在使用 emacs 在 Linux shell 中编辑这些 python 脚本。如果我能尽快得到任何 help/direction,我将不胜感激。谢谢!
要从命令行参数更改您使用的文件,您可以使用 filename = sys.argv[1]
从参数向量中获取文件名。之后,您可以打开文件,读取其内容,并进行所需的处理。假设您的文本文件每行包含一个数值,您可以尝试如下操作:
# Standard library imports.
import math
import sys
# Gets the filename from the command line arguments.
filename = sys.argv[1]
# Reads the data file.
with open(filename, "r") as file:
P = file.readlines()
# Initializes N and H.
N = 0
H = 0
# Calculates N and H.
for i in P:
a = float(i)
N += a
H += (a / N) * math.log(a / N)
# Prints the results.
print(N)
print(-H)