Python: 如何获取文件的完整路径以便移动它?
Python: How to get the full path of a file in order to move it?
我有压缩文件。我用 Zip-7 解压缩它们,所以它们位于具有 zip 文件名的文件夹中。
这些文件夹中的每一个都有我想要的 .otf 或 .ttf(有些两者都有)并移动到另一个文件夹。
我尝试了几种获取文件完整路径的方法,但每一种方法都遗漏了文件实际所在的文件夹。
这是我最近的尝试:
import os
import shutil
from pathlib import Path
result = []
for root, dirs, files in os.walk("."):
for d in dirs:
continue
for f in files:
if f.endswith(".otf"):
print(f)
p = Path(f).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
elif f.endswith(".ttf"):
print(f)
p = Path(f).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
else:
continue
其他尝试:
# parent_dir = Path(f).parents[1]
# shutil.move(f, parent_dir)
#print("OTF: " + f)
# fn = f
# f = f[:-4]
# f += '\'
# f += fn
# result.append(os.path.realpath(f))
#os.path.relpath(os.path.join(root, f), "."))
我知道这很简单,但我就是想不通。谢谢!
你应该加入文件名和路径名root
:
for root, dirs, files in os.walk("."):
for d in dirs:
continue
for f in files:
if f.endswith(".otf"):
p = Path(os.path.join(root, f)).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
elif f.endswith(".ttf"):
p = Path(os.path.join(root, f)).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
else:
continue
for root, dirs, files in os.walk(".")
for d in dirs:
continue
for f in files:
print(os.path.abspath(f))
您可以使用 os.path.abspath() 获取完整文件的路径
您还需要过滤某些文件类型。
我有压缩文件。我用 Zip-7 解压缩它们,所以它们位于具有 zip 文件名的文件夹中。
这些文件夹中的每一个都有我想要的 .otf 或 .ttf(有些两者都有)并移动到另一个文件夹。
我尝试了几种获取文件完整路径的方法,但每一种方法都遗漏了文件实际所在的文件夹。
这是我最近的尝试:
import os
import shutil
from pathlib import Path
result = []
for root, dirs, files in os.walk("."):
for d in dirs:
continue
for f in files:
if f.endswith(".otf"):
print(f)
p = Path(f).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
elif f.endswith(".ttf"):
print(f)
p = Path(f).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
else:
continue
其他尝试:
# parent_dir = Path(f).parents[1]
# shutil.move(f, parent_dir)
#print("OTF: " + f)
# fn = f
# f = f[:-4]
# f += '\'
# f += fn
# result.append(os.path.realpath(f))
#os.path.relpath(os.path.join(root, f), "."))
我知道这很简单,但我就是想不通。谢谢!
你应该加入文件名和路径名root
:
for root, dirs, files in os.walk("."):
for d in dirs:
continue
for f in files:
if f.endswith(".otf"):
p = Path(os.path.join(root, f)).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
elif f.endswith(".ttf"):
p = Path(os.path.join(root, f)).absolute()
parent_dir = p.parents[1]
p.rename(parent_dir / p.name)
else:
continue
for root, dirs, files in os.walk(".")
for d in dirs:
continue
for f in files:
print(os.path.abspath(f))
您可以使用 os.path.abspath() 获取完整文件的路径 您还需要过滤某些文件类型。