如何在命令行上 运行 python 程序之前将数据与 python 代码集成
How to integrate data with python code before running python program on command line
我已经从那个超链接下载了 movielens 数据集 ml-100k.zip(它是一个电影和用户信息数据集,它在旧的数据集选项卡中)
我已经编写了如下简单的 MapReduce 代码;
from mrjob.job import MrJob
class MoviesByUserCounter(MRJob):
def mapper(self , key ,line):
(userID,movieID,rating,timestamp)=line.split('\t')
yield userID,movieID
def reducer(self , user , movies):
numMovies=0
for movie in movies:
numMovies=numMovies+1
yield user,numMovies
if __name__=='__main__':
MoviesByUserCounter.run()
我使用 python 3.5.3 版本和 PyCharm 社区版作为 python ide.
我在命令行上试过了
python my_code.py
但它并没有像我预期的那样工作,实际上它可以工作,但它无论如何都不会等待响应。它已经 运行 一段时间了,实际上它还在继续 on.it 只在命令行上写:
Running step 1 of 1...
reading from STDIN
我如何在我的 python 程序代码中成功地在命令行上提供数据(u.data:它是 ml-100k.zip 中的数据文件?如果有还有其他解决方案吗,它也会很棒。
提前致谢。
如果我没记错的话,您想将数据作为命令行参数提供。
您可能希望使用 sys.argv
来执行此操作。除此之外,请查看 CLI(命令行界面)库。
示例:
import sys
def main(arg1, arg2, *kwargs)
#do something
if __name__ == "__main__":
#there are not enough args
if len(sys.argv) < 3:
raise SyntaxError("Too few arguments.")
if len(sys.argv) != 3:
# There are keyword arguments
main(sys.argv[1], sys.argv[2], *sys.argv[3:])
else:
# no keyword args.
main(sys.argv[1], sys.argv[2])
通过这种方式,您可以传递依赖于位置的参数,例如普通的 python 位置参数,对于前两个参数和关键字参数,格式为 a=1
。
使用示例:
将数据文件作为第一个参数传递,将一个参数作为第二个参数传递
python my_code.py data.zip 0.1
如果您将使用多个命令行参数,您将需要花时间使用 CLI 库,这样它们就不再依赖于位置。
我已经从那个超链接下载了 movielens 数据集 ml-100k.zip(它是一个电影和用户信息数据集,它在旧的数据集选项卡中) 我已经编写了如下简单的 MapReduce 代码;
from mrjob.job import MrJob
class MoviesByUserCounter(MRJob):
def mapper(self , key ,line):
(userID,movieID,rating,timestamp)=line.split('\t')
yield userID,movieID
def reducer(self , user , movies):
numMovies=0
for movie in movies:
numMovies=numMovies+1
yield user,numMovies
if __name__=='__main__':
MoviesByUserCounter.run()
我使用 python 3.5.3 版本和 PyCharm 社区版作为 python ide.
我在命令行上试过了
python my_code.py
但它并没有像我预期的那样工作,实际上它可以工作,但它无论如何都不会等待响应。它已经 运行 一段时间了,实际上它还在继续 on.it 只在命令行上写:
Running step 1 of 1...
reading from STDIN
我如何在我的 python 程序代码中成功地在命令行上提供数据(u.data:它是 ml-100k.zip 中的数据文件?如果有还有其他解决方案吗,它也会很棒。
提前致谢。
如果我没记错的话,您想将数据作为命令行参数提供。
您可能希望使用 sys.argv
来执行此操作。除此之外,请查看 CLI(命令行界面)库。
示例:
import sys
def main(arg1, arg2, *kwargs)
#do something
if __name__ == "__main__":
#there are not enough args
if len(sys.argv) < 3:
raise SyntaxError("Too few arguments.")
if len(sys.argv) != 3:
# There are keyword arguments
main(sys.argv[1], sys.argv[2], *sys.argv[3:])
else:
# no keyword args.
main(sys.argv[1], sys.argv[2])
通过这种方式,您可以传递依赖于位置的参数,例如普通的 python 位置参数,对于前两个参数和关键字参数,格式为 a=1
。
使用示例:
将数据文件作为第一个参数传递,将一个参数作为第二个参数传递
python my_code.py data.zip 0.1
如果您将使用多个命令行参数,您将需要花时间使用 CLI 库,这样它们就不再依赖于位置。