python - 如何使 python 从命令行处理输入?

标签 python python-3.x command-line-interface command-prompt

我有一个 python 脚本,它最终会被转换成一个 .exe 文件。它应该工作的方式是用户将一个 excel 文件拖放到将运行的 python 文件上,并创建另一个输出 excel 文件。

但是,它需要来自用户的 2 个输入:groupssize

当我放下 excel 文件时,命令提示符会自动打开,并提示我进行输入。但是,在提交值后,命令提示符会自动关闭,而不会执行脚本的其余部分。

如果我在不提示用户的情况下对 groupssize 的值进行硬编码,问题就会消失。

代码如下:

import pandas as pd 
import sys

x = sys.argv[1]
file = pd.read_excel(x)
file = file.sample(frac=1).reset_index(drop=True)
file['Order'] = file.groupby('GENDER').cumcount()
file = file.sort_values(['Order', 'GENDER'], ascending=[True,False]).reset_index(drop=True)

groups = input ("Group number?") 
size = input ("Group size?") 
out = {}
count = 1
students = len(file)
std_sorted = 0

for i in range (0, len(file)-size, size): 
    if count != groups: 
        out["group"+str(count)] = file[i:(i+size)]
    else: 
        out["group"+str(count)] = file[i:]       
    count += 1 
    std_sorted += size 


if std_sorted != students: 
    out["group"+str(count)] = file[std_sorted:]

index = 0
writer = pd.ExcelWriter('output.xlsx')
for i in out:
    out[i].pop("Order")
    x = pd.DataFrame(out[i])
    x.to_excel(writer, index = False, sheet_name="Sheet"+str(index))
    workbook = writer.book # Access the workbook
    worksheet= writer.sheets["Sheet"+str(index)] # Access the Worksheet

    header_list = x.columns.values.tolist() # Generate list of headers
    for i in range(0, len(header_list)):
        worksheet.set_column(i, i, len(header_list[i])+2) # Set column widths based on len(header)

    index += 1

writer.save()

最佳答案

我可以通过将代码复制粘贴到 Pycharm 而无需运行它来发现您的问题(Pycharm 在代码检查方面做得很好)...

行:

for i in range (0, len(file)-size, size): 

将始终引发 TypeError 异常。发生这种情况是因为 len(...) 是一个整数,但是 size 是一个字符串,因为它是一个输入。您需要将输入更改为:

groups = int(input("Group number?"))
size = int(input("Group size?"))

关于python - 如何使 python 从命令行处理输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62232983/

相关文章:

python - 在 Python 脚本中运行时 SQL 查询返回空白输出

python - Python 尝试使用一些 Twitter 数据更新 Sqlite3 数据库时数据类型不匹配

python - TensorFlow 2.0 [条件 x == y 不满足元素方向 :]

python - 使用 FastAPI 和 ormar 切换到测试数据库

python - 在哪里可以找到 Python 中可能的异常列表?

ruby - 使用 Rspec 2 测试命令行应用程序的 UI 层

javascript - 如何在 Node 模块中保存用户特定的配置?

permissions - 使用 Azure DevOps CLI 分配组权限

python - 黄色车道线的 HSL 范围

python - 如何从 csv 文件中提取特定列并使用 python 绘图