创建目录和文件 - 未按预期工作(pathlib、.mkdir、.touch)
Creating Directories and Files - Not working as expected (pathlib, .mkdir, .touch)
我正在尝试从 Python 中的列表创建一些目录和文件。
我对我的 for 循环的期望是它会检查列表中是否存在路径,确定它是否是文件路径。如果是这样,请创建任何必要的和不存在的目录,然后创建文件。如果路径指向不存在的目录,则创建它。
如果路径已经存在,无论它指向目录还是文件,都打印一条消息,说明不需要进一步的操作。当我 运行 我的代码时,只有项目 [0] 和 [1] 是从路径列表中创建的。
我究竟做错了什么? - 在此先感谢您的反馈!
paths = [
directory / "test1.py",
directory / "test2.py",
directory / "FOLDERA" / "test3.py",
directory / "FOLDERA" / "FOLDERB" / "image1.jpg",
directory / "FOLDERA" / "FOLDERB" / "image2.jpg",
]
for path in paths:
if path.exists() == False:
if path.is_file() == True:
path.parent.mkdir()
path.touch()
if path.is_dir() == True:
path.mkdir(parent=True)
if path.exists() == True:
print(f"No Action {path} Already Exists!")
逻辑失败是因为 is_file() 和 is_dir() 的路径检查,因为两者在开始时都是假的。
for path in paths:
print("path is ", path)
if path.exists() == False:
if path.is_file() == True: #--- Since the file is not there so is_file() will return False
path.parent.mkdir()
path.touch()
elif path.is_dir() == True: #--- Since the directory is not there is_dir() will return False
path.mkdir(parent=True)
if path.exists() == True:
print(f"No Action {path} Already Exists!")
如果您希望检查特定文件类型的条件,请改为尝试以下逻辑并在 if 块中包含自定义逻辑。
for path in paths:
print("path is ", path)
if path.exists() == False:
if "." in str(path) and path.is_file()==False : #---Assuming it is a file if it contains .
# Check if parent exists
if not path.parent.exists():
path.parent.mkdir()
path.touch()
elif path.is_dir()==False:
if not path.parent.exists():
path.parent.mkdir()
path.mkdir(parent=True)
if path.exists() == True:
print(f"No Action {path} Already Exists!")
我正在尝试从 Python 中的列表创建一些目录和文件。
我对我的 for 循环的期望是它会检查列表中是否存在路径,确定它是否是文件路径。如果是这样,请创建任何必要的和不存在的目录,然后创建文件。如果路径指向不存在的目录,则创建它。 如果路径已经存在,无论它指向目录还是文件,都打印一条消息,说明不需要进一步的操作。当我 运行 我的代码时,只有项目 [0] 和 [1] 是从路径列表中创建的。 我究竟做错了什么? - 在此先感谢您的反馈!
paths = [
directory / "test1.py",
directory / "test2.py",
directory / "FOLDERA" / "test3.py",
directory / "FOLDERA" / "FOLDERB" / "image1.jpg",
directory / "FOLDERA" / "FOLDERB" / "image2.jpg",
]
for path in paths:
if path.exists() == False:
if path.is_file() == True:
path.parent.mkdir()
path.touch()
if path.is_dir() == True:
path.mkdir(parent=True)
if path.exists() == True:
print(f"No Action {path} Already Exists!")
逻辑失败是因为 is_file() 和 is_dir() 的路径检查,因为两者在开始时都是假的。
for path in paths:
print("path is ", path)
if path.exists() == False:
if path.is_file() == True: #--- Since the file is not there so is_file() will return False
path.parent.mkdir()
path.touch()
elif path.is_dir() == True: #--- Since the directory is not there is_dir() will return False
path.mkdir(parent=True)
if path.exists() == True:
print(f"No Action {path} Already Exists!")
如果您希望检查特定文件类型的条件,请改为尝试以下逻辑并在 if 块中包含自定义逻辑。
for path in paths:
print("path is ", path)
if path.exists() == False:
if "." in str(path) and path.is_file()==False : #---Assuming it is a file if it contains .
# Check if parent exists
if not path.parent.exists():
path.parent.mkdir()
path.touch()
elif path.is_dir()==False:
if not path.parent.exists():
path.parent.mkdir()
path.mkdir(parent=True)
if path.exists() == True:
print(f"No Action {path} Already Exists!")