鱼C论坛

 找回密码
 立即注册
查看: 2956|回复: 33

[已解决]我明明照着小甲鱼的程序写的为什么就是出不来那三个文本文件呢

[复制链接]
发表于 2021-1-3 21:43:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
def save_file(boy,girl,count):
   
        file_name_boy='boy_'+str(count)+'.txt'
        file_name_girl='girl_'+str(count)+'.txt'

        boy_file=open(file_name_boy,'w')
        girl_file=open(file_name_girl,'w')

        boy_file.writelines(boy)
        girl_file.writelines(girl)

        boy_file.close()
        girl_file.close()
def split_file(file_name):
   
    f=open('E:/test.txt')
    boy=[]
    girl=[]
    count=1
    for each_line in f:
        if each_line[:6]!='======':
            (role,line_spoken)=each_line.split(':',1)
            if role=='小甲鱼':
                boy.append(line_spoken)
            if role=='小客服':
                girl.append(line_spoken)
            else:
                save_file(boy,girl,count)
                boy=[]
                girl=[]
                count+=1

    save_file(boy,girl,count)
    f.close()

split_file('E:/test.txt')

最佳答案
2021-1-3 21:45:15
  1. #定义写入函数
  2. def save_file(boy,girl,count): #传入两个列表(用于存储对话内容)和一个计数器
  3.     file_name_boy='boy_'+str(count)+'.txt'  #新建一系列文件,命名由字符串拼接
  4.     file_name_girl='girl_'+str(count)+'.txt'#同理
  5.    
  6.     boy_file=open(file_name_boy,'w')  #以写入方式打开
  7.     girl_file=open(file_name_girl,'w') #同理
  8.    
  9.     boy_file.writelines(boy) #写入
  10.     girl_file.writelines(girl)
  11.    
  12.     boy_file.close()     #关闭
  13.     girl_file.close()
  14.    
  15. #定义切分函数   
  16. def spilt_file(file_name): #传入文件名
  17.         f = open(file_name,"r",encoding='UTF-8')
  18.            #关键点,编码方式                   就这里换个编码形式
  19.         boy=[]   
  20.         girl=[]
  21.         count=1   
  22.             
  23.         for each_line in f: #遍历原对话文件每一行
  24.             if each_line[:6]!='======':  #以分割线判断
  25.                 (role,line_spoken)=each_line.split(':',1)
  26.                 #以:为界,分成元组,进行1次操作
  27.                 if role =='小甲鱼': #根据名称(前三个字符)不同分别记入两个列表
  28.                     boy.append(line_spoken)
  29.                 if role =='小客服':
  30.                     girl.append(line_spoken)
  31.                     #到这一步,所有对话均被存入两列表
  32.             else:  #不是分割线的情况下,写入
  33.                 save_file(boy,girl,count) #调用写入,写入后清空列表,等待下次添加对话内容
  34.                
  35.                 boy=[]
  36.                 girl=[]
  37.                 count+=1     #count从2到3时跳出循环,所以文件里计数器count为3的那一对文件就缺少了
  38.             
  39.         save_file(boy,girl,count)  #第三段内容(上方for循环漏掉一次写入)
  40.         f.close()   
  41.         
  42. spilt_file('E:/test.txt')   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-3 21:44:20 | 显示全部楼层
本帖最后由 昨非 于 2021-1-3 21:45 编辑

编码方式改一下
下面的第十七十八行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 21:45:15 | 显示全部楼层    本楼为最佳答案   
  1. #定义写入函数
  2. def save_file(boy,girl,count): #传入两个列表(用于存储对话内容)和一个计数器
  3.     file_name_boy='boy_'+str(count)+'.txt'  #新建一系列文件,命名由字符串拼接
  4.     file_name_girl='girl_'+str(count)+'.txt'#同理
  5.    
  6.     boy_file=open(file_name_boy,'w')  #以写入方式打开
  7.     girl_file=open(file_name_girl,'w') #同理
  8.    
  9.     boy_file.writelines(boy) #写入
  10.     girl_file.writelines(girl)
  11.    
  12.     boy_file.close()     #关闭
  13.     girl_file.close()
  14.    
  15. #定义切分函数   
  16. def spilt_file(file_name): #传入文件名
  17.         f = open(file_name,"r",encoding='UTF-8')
  18.            #关键点,编码方式                   就这里换个编码形式
  19.         boy=[]   
  20.         girl=[]
  21.         count=1   
  22.             
  23.         for each_line in f: #遍历原对话文件每一行
  24.             if each_line[:6]!='======':  #以分割线判断
  25.                 (role,line_spoken)=each_line.split(':',1)
  26.                 #以:为界,分成元组,进行1次操作
  27.                 if role =='小甲鱼': #根据名称(前三个字符)不同分别记入两个列表
  28.                     boy.append(line_spoken)
  29.                 if role =='小客服':
  30.                     girl.append(line_spoken)
  31.                     #到这一步,所有对话均被存入两列表
  32.             else:  #不是分割线的情况下,写入
  33.                 save_file(boy,girl,count) #调用写入,写入后清空列表,等待下次添加对话内容
  34.                
  35.                 boy=[]
  36.                 girl=[]
  37.                 count+=1     #count从2到3时跳出循环,所以文件里计数器count为3的那一对文件就缺少了
  38.             
  39.         save_file(boy,girl,count)  #第三段内容(上方for循环漏掉一次写入)
  40.         f.close()   
  41.         
  42. spilt_file('E:/test.txt')   
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-3 22:02:39 | 显示全部楼层

def save_file(boy,girl,count):
   
        file_name_boy='boy_'+str(count)+'.txt'
        file_name_girl='girl_'+str(count)+'.txt'

        boy_file=open(file_name_boy,'w')
        girl_file=open(file_name_girl,'w')

        boy_file.writelines(boy)
        girl_file.writelines(girl)

        boy_file.close()
        girl_file.close()
def split_file(file_name):
   
    f=open(file_name,'r',encoding='UTF-8')
    boy=[]
    girl=[]
    count=1
    for each_line in f:
        if each_line[:6]!='======':
            (role,line_spoken)=each_line.split(':',1)
            if role=='小甲鱼':
                boy.append(line_spoken)
            if role=='小客服':
                girl.append(line_spoken)
            else:
                save_file(boy,girl,count)
                boy=[]
                girl=[]
                count+=1

    save_file(boy,girl,count)
    f.close()

split_file('test.txt')
还是没有啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-3 22:06:46 | 显示全部楼层
胖胖的小阿涵 发表于 2021-1-3 22:02
def save_file(boy,girl,count):
   
        file_name_boy='boy_'+str(count)+'.txt'


有报错吗,有的话发一下,还有你的txt文件的位置
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 11:19:55 | 显示全部楼层
昨非 发表于 2021-1-3 22:06
有报错吗,有的话发一下,还有你的txt文件的位置

没报错E:\桌面\Python\test1
不知道为什么我这个还没保存上我的代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 11:20:47 | 显示全部楼层
胖胖的小阿涵 发表于 2021-1-4 11:19
没报错E:\桌面\Python\test1
不知道为什么我这个还没保存上我的代码

你得把你的文件路径填对啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 11:22:23 | 显示全部楼层
再不行就直接放到.py文件的相同位置,然后调用的时候直接写txt文件名就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 11:22:36 | 显示全部楼层
昨非 发表于 2021-1-4 11:20
你得把你的文件路径填对啊

他这个不是直接输入文件名不就行吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 11:24:07 | 显示全部楼层
胖胖的小阿涵 发表于 2021-1-4 11:22
他这个不是直接输入文件名不就行吗?

要加路径的啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 11:25:48 | 显示全部楼层

我看小甲鱼的视频上也没写路径啊,我去试试吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 11:31:44 | 显示全部楼层
胖胖的小阿涵 发表于 2021-1-4 11:25
我看小甲鱼的视频上也没写路径啊,我去试试吧

改完了还是没有
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 12:15:10 | 显示全部楼层
本帖最后由 胖胖的小阿涵 于 2021-1-4 12:17 编辑

退出就显示这个图
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 13:29:56 From FishC Mobile | 显示全部楼层
你得去你.py文件下的目录找分出来的文件
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 13:30:42 From FishC Mobile | 显示全部楼层
你都没弄明白怎么回事。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 13:43:19 | 显示全部楼层
本帖最后由 胖胖的小阿涵 于 2021-1-4 13:48 编辑
昨非 发表于 2021-1-4 13:30
你都没弄明白怎么回事。。。


咋找啊
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 13:45:57 | 显示全部楼层

你的这个代码文件在哪儿,你的保存位置就在那儿
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-4 13:50:18 | 显示全部楼层
昨非 发表于 2021-1-4 13:45
你的这个代码文件在哪儿,你的保存位置就在那儿

对啊那位置不就是我输的那个吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 13:52:23 | 显示全部楼层
这样吧,你把你的test.txt放到代码所在的文件夹下
然后把代码最后一行改成
  1. split_file('test.txt')
复制代码

这样,分割出来的东西就会在这个文件夹下了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-4 13:53:51 | 显示全部楼层
就像这样
屏幕截图 2021-01-04 135321.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-29 08:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表