【问题标题】:sh: line 0: cd: PRET: No such file or directory error in Python [duplicate]sh:第0行:cd:PRET:Python中没有这样的文件或目录错误[重复]
【发布时间】:2020-04-25 22:47:36
【问题描述】:

我试图使用 Python 编写一个脚本,该脚本使用了一个名为 PRET 的开源渗透测试工具,该工具是我从 Github 获得的。我正在为此使用 PyCharm。

我的代码是:

import os
def test():
    os.system('cd PRET')
    os.system('python2 pret.py')
test()

在这样做的时候,我遇到了这个错误:

sh: line 0: cd: PRET: No such file or directory /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python:无法打开文件'pret.py':[Errno 2]没有这样的文件或目录

【问题讨论】:

  • 1) 从不使用os.system。这是不安全的,subprocess 模块中有更好的选择。 2) os.system 为每个调用生成一个新的 shell,这意味着你的 cd PRET 没有做任何有用的事情
  • 如果pret.py 写得很好,它并不关心你在运行它时在哪个目录。如果是这样,cd there; python2 pret.py 是一种不必要的复杂方式来表达python2 there/pret.py
  • 第一条错误消息意味着您在尝试运行它的目录中没有名为PRET 的目录。可能您首先需要了解当前工作目录的概念。 stackoverflow.com/a/55342466/874188有解释。

标签: python


【解决方案1】:

os.system() 在第一次执行终止时不会记住目录更改,因此您的解决方案无法正常工作。

按照 cmets 中的建议,您可以省略 cd 命令,只需使用绝对路径执行 pret.py

import os

def test():
    os.system('python2 <absolute_path>/PRET/pret.py')

test()

【讨论】:

  • 仍然显示相同的错误:sh: line 0: cd: PRET: No such file or directory /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents /MacOS/Python:无法打开文件“pret.py”:[Errno 2] 没有这样的文件或目录
  • /PRET/pret.py 是否与您正在运行的脚本存在于同一文件夹中?
  • 首先执行os.system('ls')os.system('pwd') - 我猜您正在执行cd PRET 的目录与您认为的目录不同
  • 不。让我试试 git 克隆它。
  • 没有。只需使用脚本所在位置的绝对路径 - 请参阅我的更新答案
【解决方案2】:

这两个os.system() 命令是分开的,所以在第一个cd 之后,第二个就没有效果了。试试这个:

import os
def test():
    os.system('cd PRET; python2 pret.py')
test()

【讨论】:

  • 感谢您的努力,但仍然显示相同的错误:
  • sh: line 0: cd: PRET: No such file or directory /System/Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python: 可以't open file 'pret.py': [Errno 2] No such file or directory
猜你喜欢
  • 2021-06-10
  • 2018-06-18
  • 2020-11-07
  • 2018-05-25
  • 2013-08-03
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2021-10-31
相关资源
最近更新 更多