首先你有一个语法错误,因为os.system()
需要一个字符串参数,而你没有提供一个。这将解决您的代码:
os.system('touch {}'.format(gdsfile))
它构造一个字符串,并将其传递到os.system()
。
但更好的方法(在Python> = 3.3)是简单地使用open()
内置打开文件:
gdsfile = "/home/hha/temp.gds"
try:
open(gdsfile, 'x')
except FileExistsError:
pass
这指定模式x
这意味着独家创作 - 动作,如果已经在文件失败存在,但如果不存在则创建它。
这比使用os.path.isfile()
后跟open()
更安全,因为它避免了在检查和创建之间可能由另一个进程创建文件的潜在竞争条件。
如果您正在使用Python 2,或Python 3的早期版本,您可以用os.open()
打开该文件与专属标志。
import os
import errno
gdsfile = "/home/hha/temp.gds"
try:
os.close(os.open(gdsfile, os.O_CREAT|os.O_EXCL))
except OSError as exc:
if exc.errno != errno.EEXIST:
raise
“os.system”的参数需要是一个字符串。这不是你现在通过的。另外,当你可以使用Python自己的'open'方法时,没有理由调用'touch'命令。 – larsks