日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python 读写csv文件(创建、追加、覆盖)_python文件操作

發布時間:2024/3/13 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 读写csv文件(创建、追加、覆盖)_python文件操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大神一看題目就知道用python中的string.split('\'),記得之前處理大量的文件的時候,有時候有幾十萬的文本文件,經常會讀取獲取名稱,并且保存為名字一樣的另外一種格式的文件

其實python中有一句話可以解決這個問題的方法,如下

根據全路徑獲取文件名稱的方法os.path.basename(path)

獲取文件所在路徑的方法os.path.dirname(path)

轉自:http://blog.csdn.net/linux__kernel/article/details/8271326

很多人在Google上不停的找合適自己的壓縮,殊不知Py的壓縮很不錯。可以試試。當然C#,Java的壓縮也有第三方的類。Py有很多美名:數學理論強大,數據結構高級等等,關于壓縮算法當然用Py更加簡單易用,達到目的才是最重要的。

Python壓縮ZIP文件:

import zipfile

f = zipfile.ZipFile(target,'w',zipfile.ZIP_DEFLATED)

f.write(filename,file_url)

f.close()

其中target:是壓縮后要保存的路徑,可以是: 'C:\\temp\\'

ZIP_DEFLATED:表示壓縮,還有一個參數:ZIP_STORE:表示只打包,不壓縮。這個Linux中的gz跟tar格式有點類似.

write方法如果只有一個參數filename的話,表示把你filename所帶的路徑全部壓縮到zip文件中。如果帶兩個參數,表示把filename路徑中的那個file壓縮一下并且存放到file_url中,中間沒有增加任何的文件夾。

如果要壓縮很多的文件,循環的write就ok了

最后close掉。

Python解壓ZIP文件:

f = zipfile.ZipFile("zipfilePath",'r')

for file in f.namelist():

f.extract(file,"temp/")

zipfilePath是壓縮文件的路徑

循環訪問該壓縮文件中的文件,并且一個一個file的解壓到對應的"temp\"文件夾中

解壓當前目錄下的zip文件到當前目錄,并刪除原有的zip文件

importzipfileimportos

file_list= os.listdir(r'.')for file_name infile_list:if os.path.splitext(file_name)[1] == '.zip':printfile_name

file_zip= zipfile.ZipFile(file_name, 'r')for file infile_zip.namelist():

file_zip.extract(file, r'.')

file_zip.close()

os.remove(file_name)

View Code

這里討論使用Python解壓例如以下五種壓縮文件:

.gz .tar? .tgz .zip .rar

簡單介紹

gz:?即gzip。通常僅僅能壓縮一個文件。與tar結合起來就能夠實現先打包,再壓縮。

tar: linux系統下的打包工具。僅僅打包。不壓縮

tgz:即tar.gz。先用tar打包,然后再用gz壓縮得到的文件

zip:?不同于gzip。盡管使用相似的算法,能夠打包壓縮多個文件。只是分別壓縮文件。壓縮率低于tar。

rar:打包壓縮文件。最初用于DOS,基于window操作系統。

壓縮率比zip高,但速度慢。隨機訪問的速度也慢。

關于zip于rar之間的各種比較。可見:

gz

因為gz一般僅僅壓縮一個文件,全部常與其它打包工具一起工作。比方能夠先用tar打包為XXX.tar,然后在壓縮為XXX.tar.gz

解壓gz,事實上就是讀出當中的單一文件,Python方法例如以下:

import gzip

import os

def un_gz(file_name):

"""ungz zip file"""

f_name = file_name.replace(".gz", "")

#獲取文件的名稱,去掉

g_file = gzip.GzipFile(file_name)

#創建gzip對象

open(f_name, "w+").write(g_file.read())

#gzip對象用read()打開后,寫入open()建立的文件里。

g_file.close()

#關閉gzip對象

tar

XXX.tar.gz解壓后得到XXX.tar,還要進一步解壓出來。

*注:tgz與tar.gz是同樣的格式,老版本號DOS擴展名最多三個字符,故用tgz表示。

因為這里有多個文件,我們先讀取全部文件名稱。然后解壓。例如以下:

import tarfile

def un_tar(file_name):

untar zip file"""

tar = tarfile.open(file_name)

names = tar.getnames()

if os.path.isdir(file_name + "_files"):

pass

else:

os.mkdir(file_name + "_files")

#因為解壓后是很多文件,預先建立同名目錄

for name in names:

tar.extract(name, file_name + "_files/")

tar.close()

*注:tgz文件與tar文件同樣的解壓方法。

zip

與tar類似,先讀取多個文件名稱,然后解壓。例如以下:

import zipfile

def un_zip(file_name):

"""unzip zip file"""

zip_file = zipfile.ZipFile(file_name)

if os.path.isdir(file_name + "_files"):

pass

else:

os.mkdir(file_name + "_files")

for names in zip_file.namelist():

zip_file.extract(names,file_name + "_files/")

zip_file.close()

rar

由于rar通常為window下使用,須要額外的Python包rarfile。

解壓到Python安裝文件夾的/Scripts/文件夾下,在當前窗體打開命令行,

輸入Python?setup.py?install

安裝完畢。

import rarfile

import os

def un_rar(file_name):

"""unrar zip file"""

rar = rarfile.RarFile(file_name)

if os.path.isdir(file_name + "_files"):

pass

else:

os.mkdir(file_name + "_files")

os.chdir(file_name + "_files"):

rar.extractall()

rar.close()

tar打包

在寫打包代碼的過程中,使用tar.add()添加文件時,會把文件本身的路徑也加進去,加上arcname就能依據自己的命名規則將文件添加tar包

打包代碼:

#!/usr/bin/env?/usr/local/bin/python

#?encoding:?utf-8

import?tarfile

import?os

import?time

start?=?time.time()

tar=tarfile.open('/path/to/your.tar,'w')

for?root,dir,files?in?os.walk('/path/to/dir/'):

for?file?in?files:

fullpath=os.path.join(root,file)

tar.add(fullpath,arcname=file)

tar.close()

print?time.time()-start

在打包的過程中能夠設置壓縮規則,如想要以gz壓縮的格式打包

tar=tarfile.open('/path/to/your.tar.gz','w:gz')

其它格式例如以下表:

tarfile.open的mode有非常多種:

mode action

'r' or 'r:*'

Open for reading with transparent compression (recommended).

'r:'

Open for reading exclusively without compression.

'r:gz'

Open for reading with gzip compression.

'r:bz2'

Open for reading with bzip2 compression.

'a' or 'a:'

Open for appending with no compression.?The file is created if it does not exist.

'w' or 'w:'

Open for uncompressed writing.

'w:gz'

Open for gzip compressed writing.

'w:bz2'

Open for bzip2 compressed writing.

tar解包

tar解包也能夠依據不同壓縮格式來解壓。

#!/usr/bin/env?/usr/local/bin/python

#?encoding:?utf-8

import?tarfile

import?time

start?=?time.time()

t?=?tarfile.open("/path/to/your.tar",?"r:")

t.extractall(path?=?'/path/to/extractdir/')

t.close()

print?time.time()-start

上面的代碼是解壓全部的,也能夠挨個起做不同的處理,但要假設tar包內文件過多,小心內存哦~

tar?=?tarfile.open(filename,?'r:gz')

for?tar_info?in?tar:

file?=?tar.extractfile(tar_info)

do_something_with(file)

這幾天做程序作業的時候需要用python的讀取文件功能,在我用readlines()函數做逐行讀取的時候遇到了一個小問題,在這里和大家分享一下。

txt文件里的內容是這樣的:

1 1

2 2

3 3

4 4

5 5

代碼也沒什么問題:

1 with open('001.txt','r') as f:

2 lines = f.readlines()

3 for line in lines:

4 print(line)

但運行出來就。。。:

1 1

2

3 2

4

5 3

6

7 4

8

9 5

每兩行之間都出現了奇怪的空行,這是怎么回事呢?

其實是因為文件中每行末尾會有一個隱藏的換行符“\n”,讀取之后“\n”會被解析出來形成換行,而print()語句本身就自帶換行的效果,兩個換行疊加之后就會出現空行。

那么怎樣消除這個bug呢?

其實很簡單,python有兩個自帶的函數:.strip()和.rstrip()

.strip()的意思是消除字符串整體的指定字符

.rstrip()的意思是消除字符串末尾的指定字符

括號里什么都不寫,默認消除空格和換行符

ok,我們再來試試:

1 with open('001.txt','r') as f:

2 lines = f.readlines()

3 for line in lines:

4 print(line.strip())

運行結果:

1 1

2 2

3 3

4 4

5 5

問題解決!

刪除文件或者文件夾

import os

import shutil

name = "test"

if os.path.exists(name): #判斷文件或者文件夾是否存在

if not os.listdir(name): #判斷文件夾是否為空

os.rmdir(name) #只能刪除空文件夾

else:

shutil.rmtree(str(name)) #刪除非空文件夾

if os.path.exists(path): # 如果文件存在

# 刪除文件

os.remove(path)

問題:UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 2-3: illegal multibyte sequence

原因:python在做將普通字符串轉換為unicode對象時,

例如:u_string?= unicode(string , "gb2312"),如果你的字符串string中有諸如某些繁體字,例如"河滘小學"

中的滘,那么gb2312作為簡體中文編碼是不能進行解析的,必須使用國標擴展碼gbk,gbk支持繁體中文和日文假文

解決方法:使用gbk,代替gb2312,例如:u_string?= unicode(string , "gbk")

總結

以上是生活随笔為你收集整理的python 读写csv文件(创建、追加、覆盖)_python文件操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。