Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据给定路径的名称获取文件_Python_Image_Image Processing_Text - Fatal编程技术网

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

下面是我拥有的文本文件的格式。第三列和第四列是不带扩展名(.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
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
,它给了我名称
未定义路径