Python 如何根据给定路径的名称获取文件
下面是我拥有的文本文件的格式。第三列和第四列是不带扩展名(.jpg)的文件名,第一列是这些文件的路径。我希望转到这些路径并获取图像文件(例如,对于第一行,我希望获取从000574到000605的图像),并将它们作为用户输入复制到目标(首选)。如何使用python实现这一点Python 如何根据给定路径的名称获取文件,python,image,image-processing,text,Python,Image,Image Processing,Text,下面是我拥有的文本文件的格式。第三列和第四列是不带扩展名(.jpg)的文件名,第一列是这些文件的路径。我希望转到这些路径并获取图像文件(例如,对于第一行,我希望获取从000574到000605的图像),并将它们作为用户输入复制到目标(首选)。如何使用python实现这一点 Sbj47/Scn/Clr/rgb7 22 000574 000605 Sbj47/Scn/Clr/rgb7 61 000633 000660 Sbj31/Scn6/Clr/rgb5 10 000789 000829 Sbj3
Sbj47/Scn/Clr/rgb7 22 000574 000605
Sbj47/Scn/Clr/rgb7 61 000633 000660
Sbj31/Scn6/Clr/rgb5 10 000789 000829
Sbj31/Scn6/Clr/rgb5 21 000871 000903
...
我尝试了以下代码,但失败了:
f= open("try.txt","r")
lines = f.readlines()
line_parts = lines.split()
AttributeError: 'list' object has no attribute 'split'
标准规则:如果您有列表,那么您必须使用
for
-loop来分别处理每个元素
destination = input("Destination: ")
os.makedirs(destination, exist_ok=True) # create folder if doesn't exist
f = open("try.txt")
lines = f.readlines()
for item in lines:
line_parts = item.strip().split()
path = line_parts[0]
start = int(line_parts[2])
end = int(line_parts[3])
for number in range(star, end+1):
old_path = os.path.join(path, '{:06}.jpg'.format(number))
new_path = os.path.join(destination, '{:06}.jpg'.format(number))
os.rename(old_path, new_path)
您还可以直接从f
获取行,而不必使用readlines()
,并使用和
with open("try.txt") as f:
for item in f:
# rest
顺便说一句:numpy.array
和pandas.DataFrame
可以处理每个元素,而无需使用for
-循环。但是对于这份工作,你不需要它们。到目前为止你都试过什么?您想移动文件还是复制文件?如何描述目的地?作为参数,还是用户输入?提示:您可以将open('your_file.txt')作为f
读取文件,但可以将与
上下文管理器一起使用。您可以使用lines=f读取行。readlines()
。您可以使用line\u parts=line.split()
拆分每一行。您可以使用line\u parts[3]
和line\u parts[4]
获取第三个和第四个参数。在行中,您有一个列表,因此您必须使用for
-循环来分别处理每个项目。谢谢@furas。我尝试了你的代码,我得到了这个错误:`File“try_1st.py”,第14行old_path=os.path.join(path,f'{number}.jpg')^SyntaxError:invalid syntax`如果你使用较旧的Python,那么你需要'{}.jpg'。格式(数字)
我不知道为什么,但是图像位于文本文件小更正中提到的路径中,因为number
是整数变量,所以它在开始时没有零,当它转换为字符串'{:06}.jpg'格式(number)时需要{:06}
在文件名中加零。我正在bash中运行此python代码,当它向我询问目的地
时,我给出了我想要的目录的路径,如path/to/myfavorite
,它给了我名称未定义路径