本文目錄一覽:
- 1、寫一個python腳本,要求支持從文本文件裡面隨機抽取若干行,寫入新的文本文件裡面。
- 2、python如何隨機讀取一行
- 3、python讀取csv文件的某一行
- 4、python隨機提取文件中的某一列的任意一個值?
寫一個python腳本,要求支持從文本文件裡面隨機抽取若干行,寫入新的文本文件裡面。
import random
oldf=open(‘oldfile’,’r’) #打開原文件
newf=open(‘newfile’,’w’) #打開要寫入文件
lines=oldf.readlines() #原文件行列表
randline=random.randint(0,len(lines)) # 若干行
for i in xrange(0,randline):
newf.write(lines[random.randint(0,len(lines))]) # 寫入新文件隨機行
oldf.close()
newf.close()
python如何隨機讀取一行
#!/usr/bin/env python
# coding: utf-8
def getfilelines(filename, eol=’\n’, buffsize=4096):
“””計算給定文件有多少行”””
with open(filename, ‘rb’) as handle:
linenum = 0
buffer = handle.read(buffsize)
while buffer:
linenum += buffer.count(eol)
buffer = handle.read(buffsize)
return linenum
def readtline(filename, lineno, eol=”\n”, buffsize=4096):
“””讀取文件的指定行”””
with open(filename, ‘rb’) as handle:
readedlines = 0
buffer = handle.read(buffsize)
while buffer:
thisblock = buffer.count(eol)
if readedlines lineno readedlines + thisblock:
# inthisblock: findthe line content, and return it
return buffer.split(eol)[lineno – readedlines – 1]
elif lineno == readedlines + thisblock:
# need continue read line rest part
part0 = buffer.split(eol)[-1]
buffer = handle.read(buffsize)
part1 = buffer.split(eol)[0]
return part0 + part1
readedlines += thisblock
buffer = handle.read(buffsize)
else:
raise IndexError
def getrandomline(filename):
“””讀取文件的任意一行”””
import random
return readtline(
filename,
random.randint(0, getfilelines(filename)),
)
if __name__ == “__main__”:
import sys
import os
if len(sys.argv) == 1:
print getrandomline(“/home/tim/documents/users.csv”)
else:
for f in filter(os.path.isfile, sys.argv[1:]):
print getrandomline(f)
對於超大文件建議用逐行或分塊的方式處理;逐行處理可能慢一些,但編碼更簡單清晰一點;上面給出的是按分塊方式處理的。
python讀取csv文件的某一行
1.全部讀到成列表然後選取行(容易超時,亂碼等問題)
2.利用迭代工具,代碼如下:
from itertools import islice
with open(‘data.tsv’, ‘r’) as f:
for line in islice(f, 1, None):
# process data
f.close()
修改islice函數中第2個參數n即可,表示讀到f文件對象的第n行
python隨機提取文件中的某一列的任意一個值?
需要某列的某個值?
文本格式
1 2 3
4 5 6
如果是文本的話首先f.readlines()獲得所有行,
然後用隨機函數, random.choice(array)隨機獲得列
strs.split()值轉換成列表
再用隨機函數random.choice(strs)
隨機獲得一個元素
如果是單元格的話
就是先獲取單元格的行和列
然後用隨機函數
random.randint(0, 有效行)
random.randint(0, 有效列)
table.cell_value(列,行)
就能獲取任意值了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/254827.html