【问题标题】:How to convert a C function inputs with char** argv to python? [closed]如何将带有 char** argv 的 C 函数输入转换为 python? [关闭]
【发布时间】:2019-06-04 18:47:32
【问题描述】:

我想将具有以下函数的 C 代码转换为 python 代码,但出现错误。

int main(int argc, char** argv)
{
    int year, month, day;
    int jul;
    day = atoi(argv[1]);
    month = atoi(argv[2]);
    year = atoi(argv[3]);
...    

当我为它编写这个 python 代码时,我得到了错误:

def main(argc, **argv):

day = int(argv[1])
month = int(argv[2])
year = int(argv[3])

【问题讨论】:

  • 该 Python 代码的格式是否正确?在询问有关错误的问题时,首先请向我们展示minimal reproducible example,它复制了问题,并始终包含错误。所以请创建一个minimal reproducible example 向我们展示,然后复制粘贴(作为文本)显示示例中的 completefull 错误输出。
  • **argv 假定映射类似于 dict。如果argvstr,您可能需要*argv 或只是argv。我们将需要确切地了解您如何调用main 以便提供帮助
  • 或者你只需​​要一些good Python documentation
  • 你在 main 中没有代码块,你还没有定义 argv
  • 你知道C中的char**是什么意思吗?

标签: python c


【解决方案1】:

试试这个:

from sys import argv

def main():
    day = int(argv[1])
    month = int(argv[2])
    year = int(argv[3])

if __name__ == '__main__':
    main()

为了将来参考,你应该发布你得到的错误,而不是仅仅说你“得到错误”。

【讨论】:

  • from sys import argv 不常见的样式...它比import sys 更传统,然后使用sys.argv...
  • @JonClements 虽然在这种情况下它并不是很糟糕,但它不是真正的命名空间污染或隐藏任何东西吗?
  • @JonClements 除了“常见”和“传统”之外,您还有其他来源或理由吗?我在这段代码中使用的sys 模块的唯一组件是argv,所以我看不出只导入它有什么问题。
  • @jarhill0 确实......我倾向于只使用sys.argv 来快速和肮脏(并且很可能是一次性脚本)。
  • 嗯,当人们在学习时,我倾向于发现最好介绍更常见且易于理解的做法,而不是短手……但无论如何……六分之一半其他和所有:)
猜你喜欢
  • 2018-01-14
  • 1970-01-01
  • 2017-12-07
  • 2020-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 1970-01-01
相关资源
最近更新 更多