移回 1 个文件夹后创建一个新文件夹
Create a new folder after moving 1 folder back
嗨,我有这条老路:
OldPath = "C:\Desktop\Outerfolder\InnerFolder"
并使用以下代码片段:
os.path.normpath(OldPath + os.sep + os.pardir
我明白了 C:\Desktop\Outerfolder
但是在另一段代码中使用它:
NewFolder = os.path.join(os.path.normpath(OldPath + os.sep + os.pardir),"\NewInnerFolder")
print NewFolder
我只得到:
\NewInnerFolder
这是为什么?
也许你应该像下面这样写,不带'//'
NewFolder = os.path.join(os.path.normpath(OldPath + os.sep + os.pardir),"NewInnerFolder")
print NewFolder
当您传递 '//NewInnerFolder' 时,os.path.join 会将其视为 'absolute path' 并将其加入 drive_path。
这是 os.path.join 在 python 3.5 中的源代码:
def join(path, *paths):
if isinstance(path, bytes):
sep = b'\'
seps = b'\/'
colon = b':'
else:
sep = '\'
seps = '\/'
colon = ':'
try:
if not paths:
path[:0] + sep #23780: Ensure compatible data type even if p is null.
result_drive, result_path = splitdrive(path)
for p in paths:
p_drive, p_path = splitdrive(p)
if p_path and p_path[0] in seps:
# Second path is absolute
if p_drive or not result_drive:
result_drive = p_drive
result_path = p_path
continue
elif p_drive and p_drive != result_drive:
if p_drive.lower() != result_drive.lower():
# Different drives => ignore the first path entirely
result_drive = p_drive
result_path = p_path
continue
# Same drive in different case
result_drive = p_drive
# Second path is relative to the first
if result_path and result_path[-1] not in seps:
result_path = result_path + sep
result_path = result_path + p_path
## add separator between UNC and non-absolute path
if (result_path and result_path[0] not in seps and
result_drive and result_drive[-1:] != colon):
return result_drive + sep + result_path
return result_drive + result_path
except (TypeError, AttributeError, BytesWarning):
genericpath._check_arg_types('join', path, *paths)
raise
嗨,我有这条老路:
OldPath = "C:\Desktop\Outerfolder\InnerFolder"
并使用以下代码片段:
os.path.normpath(OldPath + os.sep + os.pardir
我明白了 C:\Desktop\Outerfolder
但是在另一段代码中使用它:
NewFolder = os.path.join(os.path.normpath(OldPath + os.sep + os.pardir),"\NewInnerFolder")
print NewFolder
我只得到:
\NewInnerFolder
这是为什么?
也许你应该像下面这样写,不带'//'
NewFolder = os.path.join(os.path.normpath(OldPath + os.sep + os.pardir),"NewInnerFolder")
print NewFolder
当您传递 '//NewInnerFolder' 时,os.path.join 会将其视为 'absolute path' 并将其加入 drive_path。
这是 os.path.join 在 python 3.5 中的源代码:
def join(path, *paths):
if isinstance(path, bytes):
sep = b'\'
seps = b'\/'
colon = b':'
else:
sep = '\'
seps = '\/'
colon = ':'
try:
if not paths:
path[:0] + sep #23780: Ensure compatible data type even if p is null.
result_drive, result_path = splitdrive(path)
for p in paths:
p_drive, p_path = splitdrive(p)
if p_path and p_path[0] in seps:
# Second path is absolute
if p_drive or not result_drive:
result_drive = p_drive
result_path = p_path
continue
elif p_drive and p_drive != result_drive:
if p_drive.lower() != result_drive.lower():
# Different drives => ignore the first path entirely
result_drive = p_drive
result_path = p_path
continue
# Same drive in different case
result_drive = p_drive
# Second path is relative to the first
if result_path and result_path[-1] not in seps:
result_path = result_path + sep
result_path = result_path + p_path
## add separator between UNC and non-absolute path
if (result_path and result_path[0] not in seps and
result_drive and result_drive[-1:] != colon):
return result_drive + sep + result_path
return result_drive + result_path
except (TypeError, AttributeError, BytesWarning):
genericpath._check_arg_types('join', path, *paths)
raise