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

歡迎訪問 生活随笔!

生活随笔

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

python

python 新建文件 hdfs_python基础操作以及hdfs操作

發布時間:2025/3/15 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 新建文件 hdfs_python基础操作以及hdfs操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

作為一個全棧工程師,必須要熟練掌握各種語言。。。HelloWorld。最近就被“逼著”走向了python開發之路,大體實現的功能是寫一個通用類庫將服務器本地存儲的文件進行簡單清洗后轉儲到HDFS中,所以基本上python的相關知識都涉及到了,這里對一些基礎操作以及hdfs操作做一總結,以備查閱。

二、基礎操作

2.1 字符串操作

字符串操作應該是所有語言的基礎。python基本上也提供了其他語言常用的一些字符串處理函數,常用的如下:

1、startswith 以某個字符串起始

2、endswith 以某個字符串結尾

3、contain python沒有提供contain函數,可以使用 'test' in somestring 的方式來進行判斷,當然也可以使用index來判斷

4、strip 去除空格及特殊符號

5、len 判斷字符串長度len(str)

6、upper lower 大小寫轉換

7、split 分隔字符串

2.2 文件操作

文件以及文件夾操作也是寫程序中經常用到的功能。python中文件操作常用的有以下函數。

1、walk 用于遞歸遍歷文件夾,獲取所有文件。

2、os.path 文件、文件夾路徑等操作。

對文件操作進行了簡單的封裝,代碼如下,僅供參考:

def isFile(name):

return os.path.isfile(name)

def isDir(name):

return os.path.isdir(name)

def getDirPath(filename):

return os.path.dirname(filename)

def getFilename(path):

return os.path.basename(path)

def getExt(filename):

return os.path.splitext(filename)[1]

def changeExt(filename, ext):

if not ext.startswith('.'):

ext = '.' + ext

return getFilenameWithoutExt(filename) + ext

def getDirAndFileNameWithoutExt(filename):

return os.path.splitext(filename)[0]

def getFilenameWithoutExt(filename):

return getFilename(getDirAndFileNameWithoutExt(filename))

def deleteFileOrFolder(path):

try:

if isFile(path):

os.remove(path)

elif isDir(path):

shutil.rmtree(path)

# or os.rmdir(path)

except:

pass

2.3 壓縮解壓縮操作

1、tar.gz

壓縮、解壓.tar.gz文件可以直接使用tarfile包,首先引入:import tarfile。解壓縮操作如下:

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

file_names = tar.getnames()

for file_name in file_names:

tar.extract(file_name, path)

tar.close()

壓縮操作如下:

tar = tarfile.open(tarpath, 'w:gz')

if isFile(srcpath):

tar.add(srcpath, arcname=srcpath)

elif isDir(srcpath):

for root, dir, files in os.walk(srcpath):

for file in files:

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

tar.add(fullpath, arcname=file)

tar.close()

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.

2、gz

壓縮、解壓.gz文件可以直接使用gzip包,首先引入:import gzip。解壓縮操作如下:

fname = path.replace('.gz', '').replace('.GZ', '')

gfile = gzip.GzipFile(path)

open(fname, 'wb').write(gfile.read())

gfile.close()

壓縮操作如下:

gfile = gzip.GzipFile(srcpath + '.gz', mode='w')

gfile.write(open(srcpath, 'rb').read())

gfile.close()

此處同樣需要注意mode的選取,并且還要注意解壓縮的時候創建解壓縮文件時的mode。

3、zip

壓縮、解壓.zip文件可以直接使用zipfile包,首先引入:import zipfile。解壓縮操作如下:

zip_file = zipfile.ZipFile(path, mode='r')

for name in zipfile.namelist():

zip_file.extract(name, getFilenameWithoutExt(path))

zip_file.close()

壓縮操作如下:

zip_file = zipfile.ZipFile(zippath, mode='w')

if isFile(srcpath):

zip_file.write(srcpath, arcname=srcpath)

elif isDir(srcpath):

for root, dir, files in os.walk(srcpath):

for file in files:

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

zip_file.write(fullpath, arcname=file)

zip_file.close()

三、hdfs操作

hdfs操作采用hdfs3庫,這是c語言寫的libhdfs庫的python封裝版,基本能滿足常用的hdfs操作。

3.1 引入hdfs3

只需要知道namenode的地址以及端口號即可,代碼如下:

from hdfs3 import HDFileSystem

hdfs = HDFileSystem(host='namenode', port=8020)

3.2 建立文件夾

如果想要上傳文件等到hdfs,必須保證其文件夾存在,否則會報錯,此時就可以先創建文件夾,只需要使用hdfs.mkdir(dir)即可,并且此命令會遞歸創建文件夾,即不需要一層層的創建不存在的文件夾。

3.3 上傳文件

上傳文件的時候只需要指定本地文件地址以及hdfs中存儲地址即可,hdfs地址也需要包含文件名,命令為hdfs.put(localfile, remotefile)。

3.4 hdfs操作封裝

同樣將我封裝的hdfs操作代碼封裝如下:

def mkdir(remotepath):

if not exists(remotepath):

hdfs.mkdir(dir)

def get(remotepath, localpath):

if exists(remotepath):

hdfs.get(remotepath, localpath)

def put(localfile, remotefile):

dir = getDirPath(remotefile)

mkdir(dir)

hdfs.put(localfile, remotefile)

def exists(remotepath):

return hdfs.exists(remotepath)

def delete(remotepath):

if exists(remotepath):

hdfs.rm(remotepath, recursive=True)

四、總結

本文簡單總結了python的部分常用基礎操作以及hdfs操作,最后還要說明一點,對這種非強類型的語言,在定義變量名稱以及傳入參數的時候一定要小心,否則會出現一些莫名其妙的錯誤。

新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!

總結

以上是生活随笔為你收集整理的python 新建文件 hdfs_python基础操作以及hdfs操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲免费二区 | 亚洲av无码日韩精品影片 | 国产91绿帽单男绿奴 | 免费av在线电影 | 午夜影院91| 草草网址 | 理论片av | 人人爽人人香蕉 | 免费在线观看黄 | 国产一级在线免费观看 | 黄色不卡视频 | 久草视频国产 | 亚洲激情自拍偷拍 | 狠狠干人人干 | 国产不卡一区 | 一本久道久久综合无码中文 | 欧美日韩国产在线播放 | av中文一区 | 亚洲一区二区精品 | 欧美大肥婆大肥bbbbb | 在线资源站 | 国产一区亚洲二区三区 | 日韩欧美自拍偷拍 | 日本女优黄色 | 欧美一级视频免费 | 亚洲网址在线观看 | 亚洲一区二区三区免费观看 | 中文字幕第六页 | 精品福利视频导航 | www.555国产精品免费 | 动漫美女被到爽 | 久久久青青草 | 综合精品| 国产手机在线观看 | 日韩一级欧美 | 操日本女人 | av永久网站| 五月天婷婷在线观看 | 法国空姐在线观看完整版 | 男女草逼网站 | 中文在线一区二区三区 | 亚洲第一色图 | 国产乱码精品一区二三赶尸艳谈 | 韩国av免费在线观看 | 污版视频在线观看 | 久久视频中文字幕 | 国产精品久久久久久久一区二区 | 亚洲少妇色 | 亚洲第一区在线观看 | 欧美视频一二区 | 欧美黄色大片免费观看 | 中文字幕在线日本 | 精品一区二区免费看 | 懂色av懂色av粉嫩av分享吧 | 97福利影院| 成人在线免费网站 | 欧美一区视频 | 久久久久久久久久久综合 | 亚洲精品一区二区在线 | 国产伦精品一区二区三 | 三级网站免费观看 | 国产剧情在线观看 | 99黄色网| 在线观看羞羞漫画 | 亚洲大胆视频 | japanesexxxx日本妞 | 少妇av一区| 四虎亚洲精品 | 99久久精品国产色欲 | 久久久99精品免费观看 | 五月天色丁香 | 午夜激情在线观看视频 | 亚洲精品乱码久久久久久麻豆不卡 | 超碰97在线免费 | 国产精品一 | 无码人妻精品一区二区三区不卡 | 一级国产视频 | 久久免费手机视频 | 亚洲av电影一区 | 外国黄色录像 | 夜夜欢视频 | 97久久精品视频 | av观看网址 | 中文字幕无码不卡免费视频 | 成人爱爱网站 | 久久无码高潮喷水 | 欧美高清视频一区 | 欧美激情视频在线 | 色综合久久中文字幕无码 | 欧美日韩一区二区三区在线观看 | 亚洲综合中文字幕在线 | 99在线成人精品视频 | 国产欧美日韩激情 | 国产精品一区在线看 | 性欧美巨大乳 | 免费播放黄色片 | 中文字幕日日夜夜 | 香港三级韩国三级日本三级 | 天天干天天爽天天操 |