【问题标题】:Command line input in python using os and system使用操作系统和系统在python中输入命令行
【发布时间】:2021-10-17 19:03:45
【问题描述】:

我正在尝试使用 python 中的 os.system 运行 iris_dataset,然后在获取值的同时,我将值从 iris_dataset 复制到 Temp,然后我打开 Temp 文件并使用它,如下所示。

import os

import sys

os.system("/home/mine/Desktop/C4.5/c4.5 -u -f iris_dataset")

os.system("/home/mine/Desktop/C4.5/c4.5rules -u -f iris_dataset > Temp")

f=open('Temp')

一旦我完成了我的程序,我将执行我的程序,例如:python3 prog_name.py 在这种情况下,每当我使用除 iris_dataset 之外的任何其他数据集时,我都需要再次打开程序并在上面的代码中更改该名称iris_dataset 已写入。

我只想进行更改,即在执行我想编写的程序时:python3 prog_name.py my_data_set_name 在命令行中,以便更容易根据我的意愿更改数据集。

【问题讨论】:

标签: python python-3.x


【解决方案1】:

您可以使用click 创建一个漂亮的控制台行界面。它可以为您提供很好的帮助文本、选项等。

例如:

import os
import click

@click.command()
@click.argument("dataset")
def init(dataset):
    """
    DATASET - Dataset to process
    """
    process_dataset(dataset)


def process_dataset(dataset):
    os.system(f"/home/mine/Desktop/C4.5/c4.5 -u -f {dataset}")
    os.system(f"/home/mine/Desktop/C4.5/c4.5rules -u -f {dataset} > Temp")
    f=open('Temp')
    ...

if __name__ == "__main__":
    init()

【讨论】:

    【解决方案2】:

    使用sys.argv

    import os
    
    import sys
    
    dataset = sys.argv[1]
    
    os.system(f"/home/mine/Desktop/C4.5/c4.5 -u -f {dataset}")
    
    os.system(f"/home/mine/Desktop/C4.5/c4.5rules -u -f {dataset} > Temp")
    
    f=open('Temp')
    

    请注意,我使用 python 的 f-strings 以获得更好的代码可读性。随意以任何您认为合适的方式使用 dataset 变量

    sys.argv documentation

    【讨论】:

    • 是的!知道了。谢谢你。它工作正常。
    • 您的答案(即使正确)已经在另一个 question 中得到了回答。您应该在回复之前检查类似的问题(通常也出现在右侧面板上)
    • 好的,我下次再做。
    猜你喜欢
    • 2014-01-23
    • 2014-07-31
    • 1970-01-01
    • 2019-05-13
    • 2016-11-28
    • 1970-01-01
    • 2019-06-20
    • 2015-01-12
    • 1970-01-01
    相关资源
    最近更新 更多