pycharm 运行sys.argv 报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pycharm 运行sys.argv 报错相关的知识,希望对你有一定的参考价值。

# -*- coding:utf-8 -*-
import sys
import os.path

script, from_file, to_file = sys.argv

print "Copying from %s to %s" % (from_file, to_file)

#we could do these two on one line too, how?
in_file = open(from_file)
indata = in_file.read()

print "The input file is %d bytes long" % len(indata) #txt文件长度

print "Does the output file exist? %r " % os.path.exists(to_file) #检查to_file是否存在
print "Ready, hit RETURN to continue, CTRL-C TO abort."
raw_input()

out_file = open(to_file,'w') #打开to_file
out_file.write(indata)

print "Alright,all done"

out_file.close()
in_file.close()

使用pycharm直接运行会报错,错误提示如下:
Traceback (most recent call last):
File "D:/python/----python/ϰ��17.py", line 5, in <module>
script, from_file, to_file = sys.argv
ValueError: need more than 1 value to unpack
这是为什么???

参考技术A Class.forName(className) 实际上是调用Class.forName(className, true, this.getClass().getClassLoader())。注意第二个参数,是指Class被loading后是不是必须被初始化。 ClassLoader.loadClass(className)实际上调用的是ClassLoader.loadClass(name, false),第二个参数指出Class是否被link。 区别就出来了。Class.forName(className)装载的class已经被初始化,而ClassLoader.loadClass(className)装载的class还没有被link追问

这个和我的问题没有关系吧

Pycharm 和 sys.argv 参数

【中文标题】Pycharm 和 sys.argv 参数【英文标题】:Pycharm and sys.argv arguments 【发布时间】:2021-08-16 06:50:54 【问题描述】:

我正在尝试调试一个将命令行参数作为输入的脚本。参数是同一目录中的文本文件。脚本从 sys.argv 列表中获取文件名。我的问题是我无法在 pycharm 中启动带有参数的脚本。

我尝试在“运行”>“编辑配置”菜单中的“脚本参数”字段中输入参数,如下所示:

-s'file1.txt', -s'file2.txt'

但它没有工作。如何使用参数启动我的脚本?

附:我在 Ubuntu 上

【问题讨论】:

【参考方案1】:

在 PyCharm 中,参数像您一样添加到 Script Parameters 中,但是 它们用双引号括起来 "" 并且没有指定像 @ 这样的解释器标志987654325@。这些标志在 Interpreter options 框中指定。

脚本参数框内容:

"file1.txt" "file2.txt"

Interpeter 标志:

-s

或者,视觉上:

然后,用一个简单的测试文件来评估:

if __name__ == "__main__":
    import sys
    print(sys.argv)

我们得到我们提供的参数(sys.argv[0]当然是脚本名):

['/Path/to/current/folder/test.py', 'file1.txt', 'file2.txt']

【讨论】:

谢谢它的工作。此外,事实证明我应该使用 "" 引号而不是 ''。 这很有帮助;但为了澄清,我的python脚本将两个文件名作为参数,一个用于-r,一个用于-s(或两者或一个或两者都不)。所以我的脚本参数被指定为 [-p "prof_samples.txt" -r "resp_samples.txt"] 没有解释器选项。 我认为这个答案已经过时了,因为没有script parameters @tisaconundrum 在检查完这个之后,你能告诉我你正在运行什么版本的 PyCharm 吗?我刚刚下载了最新版本(PyCharm Community Edition 2017.2.3 Build #PC-172.3968.37,于 2017 年 9 月 1 日构建),仍然看到Script parameters 选项。 答案已过时。对于 pycharm 2019.1.3,该字段仅称为 Parameters,您不必在参数周围加上双引号。【参考方案2】:

为了其他想知道如何到达此窗口的人。方法如下:

您可以通过单击Select Run/Debug Configurations( 左侧)并转到Edit Configurations 来访问它。一种 为清楚起见提供了 gif。

【讨论】:

这个短片确实很有帮助——谢谢!这就是我讨厌gui的东西。它就像一个复活节彩蛋狩猎,而你只需在命令行中输入它。 这比最好的投票更有帮助。谢谢!【参考方案3】:

在 PyCharm 社区版或专业版 2019.1+ 上:

    从菜单栏中点击运行 -> 编辑配置Parameters文本框中添加您的参数(例如file2.txt file3.txt--myFlag myArg --anotherFlag mySecondArg) 点击应用 点击确定

【讨论】:

【参考方案4】:

除了 Jim 的回答(抱歉,没有足够的代表点来发表评论),只是想指出 PyCharm 中指定的参数确实 not 有特殊字符转义,不像你会做的那样在命令行上。所以,虽然在命令行上你会这样做:

python mediadb.py  /media/paul/New\ Volume/Users/paul/Documents/spinmaster/\*.png

PyCharm 参数为:

"/media/paul/New Volume/Users/paul/Documents/spinmaster/*.png"

【讨论】:

【参考方案5】:

请注意,由于某些未知原因,无法在 PyCharm Edu 版本中添加命令行参数。它只能在专业版和社区版中完成。

【讨论】:

【参考方案6】:

将以下内容添加到 Python 文件的顶部。

import sys

sys.argv = [
    __file__,
    'arg1',
    'arg2'
]

现在,您只需右键单击 Python 脚本即可。

【讨论】:

【参考方案7】:

第一个参数是您要运行的脚本的名称。从第二个参数开始,它是您要从命令行传递的参数。下面是一个测试脚本:

from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second
from sys import argv

script, first, second = argv
print "Script is ",script
print "first is ",first
print "second is ",second

以下是您传递输入参数的方式: '脚本路径','第一个参数','第二个参数'

假设您的脚本的路径是/home/my_folder/test.py,输出将是:

Script is /home/my_folder/test.py
first is First Parameter
second is Second Parameter

我花了一些时间才弄清楚输入参数是逗号分隔的。

【讨论】:

【参考方案8】:

我相信它甚至包含在 Edu 版本中。只需右键单击实心绿色箭头按钮(运行)并选择“添加参数”。

【讨论】:

【参考方案9】:

它适用于我的 edu 版本。我没有必要在解释器选项中指定 -s 选项。

【讨论】:

【参考方案10】:

在 PyCharm 的编辑配置中,当您将参数作为字符串提供时,不应使用 ''(这些引号)来提供输入。

代替-s'file1.txt', -s'file2.txt' 只需使用:

-s 文件1.txt, -s 文件2.txt

【讨论】:

以上是关于pycharm 运行sys.argv 报错的主要内容,如果未能解决你的问题,请参考以下文章

Pycharm参数设置二

python怎么设置list的下标从1开始

6. Pycharm的传参快捷键执行代码调试模式

Pycharm安装步骤

python中的sys.argv有啥用?print sys.argv啥意思?

python sys.argv用法