【问题标题】:Python file not found error when the file clearly exists当文件明确存在时,Python文件未找到错误
【发布时间】:2011-11-15 15:12:50
【问题描述】:

我一直在从事一个项目,该项目采用 MySQL 转储并使用用户提供的信息恢复数据库。我不断收到一个文件找不到错误然后我的自定义调试错误说明了这一点。操作系统命令失败。

try:
    username = self.username.get()
    password = self.password.get()
    database = self.database.get()
    file = self.filename
    print str(username)
    print str(file)
    test = os.system("mysql -u" + username + " -p" + password + " " + database + " <" + file)
    if (test != 0):
        print "OS COMMAND FAILED"
    else:
        print "pass"
    print test

except:
    print "fail"
    print "Unexpected error:", sys.exc_info()[0]
    raise

我也会继续研究,以防万一我找到解决方案。我一直在查看 os.system 命令,但如果我在命令中直接指定文件名而不是从变量中检索它,问题就会消失。

所有变量都是从输入框中提取的。用户无法错误地键入文件名,因为程序会根据 openfile 对话框填充文件名,并且不允许用户编辑该框。

错误文本:

C:/Documents and Settings/XPMUser/Desktop/src/database.sql

系统找不到指定的文件。

操作系统命令失败

1

【问题讨论】:

  • 提供您看到的错误的完整文本也会有所帮助。

标签: python mysql sql tkinter


【解决方案1】:

如果文件名中有空格,则会导致您描述的那种问题。 shell 会将空格解析为分隔符。你可能想做类似的事情

import pipes
...
database + " < " + pipes.quote(filename)

更好的是,使用subprocess 模块

test = subprocess.call(['mysql', '-u', username, '-p', password, database],
    stdin=open(file))

【讨论】:

  • 谢谢,我什至没有想到系统给我的文件名。一旦我离开代码并重新查看控制台,我意识到文件名路径有空格,谢谢。
猜你喜欢
  • 2023-03-02
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2019-03-01
  • 1970-01-01
  • 2015-07-01
  • 2021-05-08
相关资源
最近更新 更多