|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
零基础入门学习python课后作业第30讲第3题,我运行之后出现这个代码,请大神帮忙看看怎么解决
代码如下:
import os
def serch(star_file,target):
os.chdir(star_file)
for each_file in os.listdir(os.curdir):
ext = os.path.splitext(each_file)[1]
if ext in target:
file_address.append(os.getcwd() + os.sep + each_file + os.linesep)
if os.path.isdir(each_file):
serch(each_file,target)
os.chdir(os.pardir)
star_file = input("请输入待查找的初始目录:")
target = ['.mp4','.rmvb','.avi']
file_address = []
serch(star_file,target)
f = open('e:\\fishC\\课后作业\\p30\\vedioLise.txt','w')
f.writelines(file_address)
f.close()
运行提示:
请输入待查找的初始目录:e:\\fishC
Traceback (most recent call last):
File "E:\fishC\课后作业\p30\3.py", line 19, in <module>
f.writelines(file_address)
UnicodeEncodeError: 'gbk' codec can't encode character '\uc544' in position 18: illegal multibyte sequence
您好!根据您提供的代码和错误提示,问题出在向文件写入时遇到了非GBK编码的字符。为了解决这个问题,您可以在打开文件时指定编码为`utf-8`。请将以下代码中的`f = open('e:\\fishC\\课后作业\\p30\\vedioLise.txt','w')`这一行替换为:
f = open('e:\\fishC\\课后作业\\p30\\vedioLise.txt', 'w', encoding='utf-8')
修改后的完整代码如下:
import os
def serch(star_file, target):
os.chdir(star_file)
for each_file in os.listdir(os.curdir):
ext = os.path.splitext(each_file)[1]
if ext in target:
file_address.append(os.getcwd() + os.sep + each_file + os.linesep)
if os.path.isdir(each_file):
serch(each_file, target)
os.chdir(os.pardir)
star_file = input("请输入待查找的初始目录:")
target = ['.mp4', '.rmvb', '.avi']
file_address = []
serch(star_file, target)
f = open('e:\\fishC\\课后作业\\p30\\vedioLise.txt', 'w', encoding='utf-8')
f.writelines(file_address)
f.close()
使用上面的修改后的代码,您应该能够正确地在文件中写入包含非GBK编码字符的文本。
|
|