设计函数get_pngs_from_pic将pic文件夹中所有*.png文件的绝对路径按cp936编码以文本的形式输出到imagepng.txt记事本中,每个*.png文件的绝对路径占imagepng.txt文件的一行,该函数包含两个默认值参数(图像文件夹参数、imagepng.txt的全路径)。编写函数get_pngs_from_bonn将bonn文件夹中*.png文件的全路径追加到imagepng.txt文件的尾部,该函数包含两个默认值参数(图像文件夹参数、imagepng.txt的全路径)。编写函数read_png_fullpath_bytext (), 以字符串列表的形式返回imagepng.txt文件的内容,该函数包含一个默认值参数txtpath, 调用read_png_fullpath_bytext (),逐行打印imagepng.txt文件的内容。
时间: 2024-02-26 13:57:02 浏览: 141
以下是实现上述功能的Python代码:
```python
import os
def get_pngs_from_pic(pic_folder=os.path.join(os.getcwd(), 'pic'), txt_path=os.path.join(os.getcwd(), 'imagepng.txt')):
with open(txt_path, 'w', encoding='cp936') as f:
for root, dirs, files in os.walk(pic_folder):
for file in files:
if file.endswith('.png'):
f.write(os.path.join(root, file) + '\n')
def get_pngs_from_bonn(bonn_folder=os.path.join(os.getcwd(), 'bonn'), txt_path=os.path.join(os.getcwd(), 'imagepng.txt')):
with open(txt_path, 'a', encoding='cp936') as f:
for root, dirs, files in os.walk(bonn_folder):
for file in files:
if file.endswith('.png'):
f.write(os.path.join(root, file) + '\n')
def read_png_fullpath_bytext(txtpath=os.path.join(os.getcwd(), 'imagepng.txt')):
with open(txtpath, 'r', encoding='cp936') as f:
return f.readlines()
if __name__ == '__main__':
get_pngs_from_pic()
get_pngs_from_bonn()
print(read_png_fullpath_bytext())
```
其中,`os.walk()`函数可以递归遍历文件夹中的所有文件和子文件夹,`endswith()`方法可以判断文件名是否以指定后缀结尾。在`get_pngs_from_pic()`函数中,我们使用`'w'`模式打开`imagepng.txt`文件,这将覆盖原有的内容;在`get_pngs_from_bonn()`函数中,我们使用`'a'`模式打开`imagepng.txt`文件,这将在原有内容的末尾追加新的内容。注意,为了避免中文字符编码问题,我们使用了`encoding='cp936'`参数。在`read_png_fullpath_bytext()`函数中,我们使用`readlines()`方法将每一行的内容读入到一个字符串列表中,然后返回该列表。最后,在主函数中,我们依次调用三个函数,并使用`print()`函数打印出`read_png_fullpath_bytext()`函数返回的字符串列表。
阅读全文