gpt4 book ai didi

python - os.path.exists 在 python 中没有按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 07:57:33 25 4
gpt4 key购买 nike

我尝试在主路径中创建一个目录,并在使用 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")

最佳答案

波浪号 ~表示主目录是 shell 约定。它由os.system 中的shell 展开, 但它在 Python 中是按字面理解的。

所以你创建<HOME>/<DIR> , 但测试 ~/<DIR> .

关于python - os.path.exists 在 python 中没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46168836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com