Python,尝试从命令提示符运行程序

发布于 2024-08-22 02:40:16 字数 464 浏览 7 评论 0原文

我正在尝试从 Windows 中的命令提示符运行程序。我遇到一些问题。代码如下:

commandString = "'C:\Program Files\WebShot\webshotcmd.exe' //url '" + columns[3] + "' //out '"+columns[1]+"~"+columns[2]+".jpg'"
os.system(commandString)
time.sleep(10)

因此,使用单引号,我得到“文件名、目录名或卷标语法不正确”。如果我用 \" 替换单引号,那么它会说“'C:\Program' 不是有效的可执行文件。”

我意识到这是一个语法错误,但我不太确定如何解决这个问题。 ...

列 [3] 包含从 Web 浏览器粘贴的完整 url 副本(因此应该对它进行 url 编码)。列 [2] 包含一些文本、双引号和冒号。以防万一提及...

谢谢!

I am trying to run a program from the command prompt in windows. I am having some issues. The code is below:

commandString = "'C:\Program Files\WebShot\webshotcmd.exe' //url '" + columns[3] + "' //out '"+columns[1]+"~"+columns[2]+".jpg'"
os.system(commandString)
time.sleep(10)

So with the single quotes I get "The filename, directory name, or volume label syntax is incorrect." If I replace the single quotes with \" then it says something to the effect of "'C:\Program' is not a valid executable."

I realize it is a syntax error, but I am not quite sure how to fix this....

column[3] contains a full url copy pasted from a web browser (so it should be url encoded). column[1] will only contain numbers and periods. column[2] contains some text, double quotes and colons are replaced. Mentioning just in case...

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

时光瘦了 2024-08-29 02:40:16
  • 在这种情况下,Windows 需要双引号,而您使用了单引号。
  • 使用subprocess模块而不是os.system,这样更加健壮,并且避免了直接调用shell,让你不必担心令人困惑的转义问题。
  • 不要使用 + 将长字符串放在一起。使用字符串格式化(string %s" % (formatting,)),这样更易​​读、更高效、更惯用。
  • 在这种情况下,无论如何不要形成长字符串作为 shell 命令,make一个列表并将其传递给 subprocess.call
  • 据我所知,您正在转义正斜杠,而不是反斜杠,这是带有 // 的字符串文字。无论如何,您应该使用 os.path 模块来避免解析转义造成的任何混乱,并且通常使脚本更可移植。
  • Windows requires double quotes in this situation, and you used single quotes.
  • Use the subprocess module rather than os.system, which is more robust and avoids calling the shell directly, making you not have to worry about confusing escaping issues.
  • Dont use + to put together long strings. Use string formatting (string %s" % (formatting,)), which is more readable, efficient, and idiomatic.
  • In this case, don't form a long string as a shell command anyhow, make a list and pass it to subprocess.call.
  • As best as I can tell you are escaping your forward slash but not your backslashes, which is backwards. A string literal with // has both slashes in the string it makes. In any event, rather than either you should use the os.path module which avoids any confusion from parsing escapes and often makes scripts more portable.
热血少△年 2024-08-29 02:40:16

使用 subprocess 模块来调用系统命令。另外,尝试删除单引号并使用双引号。

Use the subprocess module for calling system commands. Also ,try removing the single quotes and use double quotes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文