Ошибка файла Python, когда файл явно существует - PullRequest
0 голосов
/ 15 ноября 2011

Я работал над проектом, который берет дамп 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, но проблема исчезнет, ​​если я укажу имя файла прямо в команде, а не получу его из переменной.

Все переменные извлекаются из полей ввода. Пользователь не может неправильно ввести имя файла, так как программа заполняет имя файла на основе диалогового окна openfiledialog и не позволяет пользователю редактировать это поле.

Текст ошибки:

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

корень

Система не может найти указанный файл.

ОС КОМАНДА НЕ ВЫПОЛНЕНА

1

1 Ответ

2 голосов
/ 15 ноября 2011

Если в имени файла есть пробел, это вызовет проблему, которую вы описываете.Оболочка будет анализировать пространство как разделитель.Возможно, вы захотите сделать что-то вроде

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

Еще лучше, используйте модуль subprocess

test = subprocess.call(['mysql', '-u', username, '-p', password, database],
    stdin=open(file))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...