python 截图遇到的文件夹循环问题
# resize the picture
from PIL import Image
for i in range(1,45):
img = Image.open("C://Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png")
print(img.size)
cropped = img.crop((100, 0, 1200,625)) # (left, upper, right, lower)
cropped.save("C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/str(i).png")
FileNotFoundError: [Errno 2] No such file or directory: 'C://Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png'
你怎么在文件路径里面调用python的str()函数,这会当成字符串,不识别,使用python的格式化字符串将变量加到字符串中,或者直接拼接,修改如下,记得采纳哦!
# resize the picture
from PIL import Image
for i in range(1,45):
img = Image.open(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic/{i}.png")
print(img.size)
cropped = img.crop((100, 0, 1200,625)) # (left, upper, right, lower)
cropped.save(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/{i}.png")
处理方法有很多!
望采纳!!!点击回答右侧采纳即可!!这个错误是由于代码中使用了错误的文件路径导致的。在代码中,你使用了字符串"str(i)"来表示文件名,但是实际上应该使用变量i来表示。
修改代码,将 "str(i)" 替换为 "{}".format(i) 即可
修改后的代码:
# resize the picture
from PIL import Image
for i in range(1,45):
img = Image.open("C://Users/xiaoran.ma/Desktop/Desk/dream/pic/{}.png".format(i))
print(img.size)
cropped = img.crop((100, 0, 1200,625)) # (left, upper, right, lower)
cropped.save("C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/{}.png".format(i))
这个问题是因为在打开文件时,路径字符串中包含字符串 "str(i)",而不是 i 的值。
要解决这个问题,可以使用字符串插值(string interpolation),来代替在字符串中直接编写变量的值。
可以把下面这行代码
img = Image.open("C://Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png")
改成
img = Image.open(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic/{i}.png")
同样的方法也可以更新保存图像的路径.
cropped.save(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/{i}.png")
另外,为了避免类似的问题出现,建议在代码中使用相对路径或绝对路径,不要使用混合路径
仅供参考,望采纳,谢谢。
FileNotFoundError: [Errno 2] No such file or directory: 'C://Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png'
FileNotFoundError:[Erno 2]没有这样的文件或目录:'C:/Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png'
出现该类现象,大概率是因为路径问题
就像上面的答友提出的一样,str(i).png替换为 "{}".format(i) 。
其次,最好是使用绝对路径
当然还需要注意Windows与Linux分隔符的区别:
Windows下的分割符:\
Linux下的分割符:/
建议采用如下方式, 修改如下:
# resize the picture
from PIL import Image
for i in range(1, 45):
img = Image.open(r"C:\Users\xiaoran.ma\Desktop\Desk\dream\pic\{name}.png".format(name=str(i)))
print(img.size)
cropped = img.crop((100, 0, 1200, 625)) # (left, upper, right, lower)
cropped.save(r"C:\Users\xiaoran.ma\Desktop\Desk\dream\pic_cut\{name}.png".format(name=str(i)))
可以使用 os 模块来实现循环遍历文件夹中的图片文件并进行截图。具体实现可以使用 os.listdir() 方法获取文件夹中的文件名列表,然后使用 os.path.join() 方法将文件名和文件夹路径连接起来,得到每个文件的绝对路径。最后使用Pillow库中的Image来读取图片并进行截图。
具体示例代码如下:
import os
from PIL import Image
folder_path = "path/to/your/folder"
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
if os.path.isfile(file_path):
with Image.open(file_path) as img:
# do something with the image
# resize the picture
from PIL import Image
for i in range(1,45):
# img = Image.open("C://Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png")
# 作者此行写错,请使用以下代码
img = Image.open(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic/{i}.png")
print(img.size)
cropped = img.crop((100, 0, 1200,625)) # (left, upper, right, lower)
# cropped.save("C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/str(i).png")
# 作者此行存在问题,应使用
cropped.save(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/{i}.png")
FileNotFoundError: [Errno 2] No such file or directory: 'C://Users/xiaoran.ma/Desktop/Desk/dream/pic/str(i).png'
问题出在文件路径,这样编写文件路径是不对的,应当使用文本替换的方法。
可以使用format函数:
# resize the picture
from PIL import Image
for i in range(1,45):
img = Image.open("C://Users/xiaoran.ma/Desktop/Desk/dream/pic/{}.png".format(i))
print(img.size)
cropped = img.crop((100, 0, 1200,625)) # (left, upper, right, lower)
cropped.save("C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/{}.png".format(i))
也可以用简化版的:
img = Image.open(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic/{i}.png")
同样,处理后图像的保存路径可以修改为
cropped.save(f"C://Users/xiaoran.ma/Desktop/Desk/dream/pic_cut/{i}.png")
仅供参考,望采纳!