Форум сайта python.su
63
Если расширение файла совпадает с принятым в системе для открытия такого типа файлов, то можно
os.startfile(path_to_file)
Офлайн
43
4kptникак, я просто предположил
Офлайн
4
reclosedev
Имя с пробелами передается в кавычках, чтобы не писать \\ вместо \ можно использовать сырые строки (r“”)
file = r'“C:\Documents and Settings\limited\text.old”'
Но в данном случае правильнее использовать subprocess.call(), тогда кавычки не понадобятся.
#!/usr/bin/python3 from main import * import subprocess app=r'"C:\WINDOWS\notepad.exe"' file=r'"C:\WINDOWS\WindowsUpdate.log"' subprocess.call([app,file]) #os.startfile(file)
C:\Documents and Settings\limited>tst.py
Traceback (most recent call last):
File "C:\Python33\lib\subprocess.py", line 1090, in _execute_child
startupinfo)
OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или мет
ке тома
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Documents and Settings\limited\tst.py", line 11, in <module>
subprocess.call([app,file])
File "C:\Python33\lib\subprocess.py", line 521, in call
with Popen(*popenargs, **kwargs) as p:
File "C:\Python33\lib\subprocess.py", line 818, in __init__
restore_signals, start_new_session)
File "C:\Python33\lib\subprocess.py", line 1096, in _execute_child
raise WindowsError(*e.args)
OSError: [WinError 123] Синтаксическая ошибка в имени файла, имени папки или мет
ке тома
Офлайн
4
4kptСпасибо. Пока остановлюсь на варианте
os.startfile(path_to_file)
#!/usr/bin/python3 from main import * file="C:\WINDOWS\WindowsUpdate.log" exist(file) os.startfile(file)
Отредактировано vanvanov (Март 31, 2013 21:55:35)
Офлайн
857
vanvanov1) потому что нет пробела между notepad.exe и C:\
Почему не работает следующий код?
cmd="C:\\WINDOWS\\notepad.exe" file="C:\\Documents and Settings\\limited\\text.old" os.system('{0} "{1}"'.format(cmd, file))
Отредактировано py.user.next (Апрель 1, 2013 02:19:24)
Офлайн
173
vanvanov
subprocess.call выдает
reclosedev
…использовать subprocess.call(), тогда кавычки не понадобятся.
Офлайн