【发布时间】:2017-09-12 05:52:19
【问题描述】:
我正在尝试在主路径中创建一个目录,并在使用 os.path.exists() 重新创建之前重新检查该目录是否存在于主路径中,但它没有按预期工作。
if os.access("./", os.W_OK) is not True:
print("Folder not writable")
dir_name_tmp = subprocess.Popen('pwd', stdout=subprocess.PIPE, shell=True)
dir_name_tmp = dir_name_tmp.stdout.read()
dir_name = dir_name_tmp.split('/')[-1]
dir_name = dir_name.rstrip()
os.system('ls ~/')
print "%s"%dir_name
if not os.path.exists("~/%s"%(dir_name)):
print "Going to create a new folder %s in home path\n"%(dir_name)
os.system('mkdir ~/%s'%(dir_name))
else:
print "Folder %s Already Exists\n"%(dir_name)
os.system('rm -rf ~/%s & mkdir ~/%s'%(dir_name, dir_name))
else :
print("Folder writable")
第一次输出:
Folder not writable
Desktop Downloads Perforce bkp doc project
hello.list
Going to create a new folder hello.list in home path
第二次输出:
Folder not writable
Desktop Downloads Perforce bkp doc hello.list project
hello.list
Going to create a new folder hello.list in home path
mkdir: cannot create directory `/home/desperado/hello.list': File exists
虽然目录存在,但它不会进入 else 循环。我错过了什么吗?分享你的意见!
提供建议的更新工作代码:使用 $HOME 目录和 os.path.expandusr
if os.access("./", os.W_OK) is not True:
log.debug("Folder Is Not writable")
dir_name_tmp = subprocess.Popen('pwd', stdout=subprocess.PIPE, shell=True)
dir_name_tmp = dir_name_tmp.stdout.read()
dir_name = dir_name_tmp.split('/')[-1]
dir_name = dir_name.rstrip()
log.debug("dir_name is %s"%dir_name)
dir_name_path = (os.path.expanduser('~/%s'%(dir_name))).rstrip()
log.debug("dir_name_path is %s"%(dir_name_path))
# if not os.path.exists('~/%s'%(dir_name)):
if not os.path.exists('%s'%(dir_name_path)):
log.debug("Going to create a new folder %s in home path\n"%(dir_name))
os.system('mkdir $HOME/%s'%(dir_name))
else:
log.debug("Folder %s Already Exists\n"%(dir_name))
os.system('rm -rf %s'%(dir_name_path))
os.system('mkdir $HOME/%s'%(dir_name))
else :
log.debug("Folder Is Writable")
【问题讨论】:
-
请勿使用
x is not True进行比较。只需使用not x。 -
在签入
os.path.exists()时,您只是传递了dir_name,而不是绝对路径。因此它返回False。尝试在调用os.path.exists()时传递目录的绝对路径,它应该可以工作。 -
@KarlKnechtel:对不起,我没听明白。问题在于第二个 if 条件,即如果不是 os.path.exists("~/%s"%(dir_name)):。我只使用 if not case only。
-
@Tanu:我确实通过了绝对路径。如果您看到我正在使用 ~/%s,即 ~/(目录名称)。我正在寻找主路径中的目录名称,但它仍然说该目录不存在。
-
Python 不会自动扩展
~。使用os.path.expanduser()。
标签: python python-2.7