博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Learning Python 013 按行读取文件(逐行读取) --- 按行写入文件(逐行写入) --- 实战:从字幕文件中提取字幕内容...
阅读量:6755 次
发布时间:2019-06-26

本文共 2684 字,大约阅读时间需要 8 分钟。

hot3.png

使用的开发集成环境:PyCharm 2016.1.4 

使用的Python的版本:python 2.7.10

知识点:Python 按行读取文件

读取整个文件的内容

f = open('filename.txt', 'r')text = f.read()f.close()print text

读取一行的内容(按行读文件的内容)

参考网站:

Python逐行读取文件内容 

f = open('filename.txt', 'r')while 1:    line = f.readline()    if not line:        break    print text    passf.close()

缺点:它依赖于前后文的关系,所以不能获取指定行的内容。

读取一行的内容 和 行号

参考网站:

python读取文件同时输出行号和内容 

f = open('filename.txt', 'r')for (num,value) in enumerate(f):    print "line number", num, "is:", valuef.close()

缺点:虽然这段代码可以获取到指定行的内容,但是,使用enumerate()函数获取指定行内容的代价是:需要对所有依次进行编号,可想运算量之大。

读取指定行的内容

参考网站:

Python 从指定行读取数据 

import linecachenum = 20linecache.getline('filename.txt', num)

优点:读取的是缓存内的数据,速度快,并且代码简单。

知识点:Python 按行写入文件

参考网站:

Python文件读写 

 
Python读写文件 

写一行(新建文件、替换现有文件)

f = open('namefile.txt', 'w')f.write('the first line: hello world in the new file.\n')f.write('the sencond line: ')f.write('this is also the second line.\n')f.close()f = open('namefile.txt', 'r')text = f.read()f.close()print text

执行输出:

the first line: hello world in the new file.the sencond line: this is also the second line.

f = open('namefile.txt', 'w')这段代码的执行:如果有这个namefile.txt文件,那就将现有的namefile.txt文件里面的内容全部自动清空;如果没有这个namefile.txt文件,那就自动新建一个namefile.txt文件。

写一行(在原有文件后面追加写入)

f = open('namefile.txt', 'w+')f.write('the last line: hello world in the new file.\n')f.close()f = open('namefile.txt', 'r')text = f.read()f.close()print text

输出:

the first line: hello world in the new file.the sencond line: this is also the second line.the last line: hello world in the new file.

实战:从字幕文件中提取字幕内容

github源代码网址:

如何获取字幕文件

参考网站:

视频网站: 

字幕提取网站:

设计思路

输入是英文字幕文件和中文字幕文件,输出是英文配中文的txt文件

英文字幕文件

Alt text

中文字幕文件

Alt text

输出:英文配中文的txt文件

Alt text

代码

# coding : utf-8import linecachefile_srt = open('Servos - working principle and homemade types.srt', 'r')file_txt = open('newfile.txt', 'w')cout=1for (num, value) in enumerate(file_srt):    if cout == 5:        cout = 1    if cout == 3:        file_txt.write(linecache.getline('en-Servos - working principle and homemade types.srt', num+1))        file_txt.write(value)    cout += 1file_srt.close()file_txt.close()

运行输出

Youtube subtitles download by mo.dbxdb.com Youtube subtitles download by mo.dbxdb.com In this video I would like to explain the functionality of servos and how to convert conventional DC motors into homebuilt servos.在这部影片中,我想解释一下舵机以及如何传统的直流电动机转换成自制伺服系统的功能。 A servo is a device that produces motion accordant to a command signal from a control system.伺服是,从一个控制系统产生运动一致来的命令信号的装置。 Usually an electric motor is used to create a mechanical force and the servomechanism rotates at a velocity that approximates the command signal.一般的电动机被用来创建一个机械力和伺服机构在近似于指令信号的速度旋转。 ......

请访问:

转载于:https://my.oschina.net/airship/blog/1591138

你可能感兴趣的文章
vim利器:vundle 管理器和NERDTree插件
查看>>
系统虚拟机
查看>>
java集合之ArrayList(1)
查看>>
getMemory的经典例子
查看>>
android分析之mutex
查看>>
Tyvj P3119 核电站问题 动态规划
查看>>
【操作系统】总结三(内存管理)
查看>>
关于byte[]和字符串的转换
查看>>
Swashbuckle.AspNetCore(v2.5.0)使用小记
查看>>
VirtulBox添加自定义分辨率
查看>>
Android Training Caching Bitmaps 翻译
查看>>
SpringMVC (五)视图解析器
查看>>
微信开发
查看>>
P3165 [CQOI2014]排序机械臂
查看>>
拉格朗日反演
查看>>
交通流量
查看>>
BZOJ3331 BZOJ2013 压力
查看>>
运算符
查看>>
ListView 里面嵌套 GridView 遇到的问题及其解决方法。
查看>>
Python2、3解释器inpurt()函数的区别
查看>>