日韩性视频-久久久蜜桃-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操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日本不卡影院 | 99免费精品| 亚洲25p| 欧美黑人性生活 | 村姑电影在线播放免费观看 | 午夜剧场成人 | 三浦理惠子av在线播放 | 五月天婷婷在线视频 | 亚洲欧洲国产日韩 | 啪啪免费视频网站 | 久久久久国产一区 | 五月婷婷综合久久 | 婷婷综合视频 | 亚洲精品久久视频 | 青青草视频播放器 | 偷拍视频一区二区 | 黑人玩弄人妻一区二区三区四 | 国产精品免费av | 91香蕉嫩草| 91www在线观看 | 成人h片 | 波多野结衣 一区 | 天天射天天干天天舔 | 久久的色偷偷 | 绿帽人妻精品一区二区 | 青青青手机在线视频 | 国产麻豆成人 | 欧美色一区二区三区在线观看 | 国产二区电影 | 另类小说婷婷 | 久久成人一区二区 | 免费看黄色一级片 | 福利视频免费观看 | 亚洲高清视频免费观看 | 久草影视网 | 91麻豆国产在线观看 | 日韩一区二区三区视频在线观看 | 欧美久久一区二区三区 | 亚洲婷婷在线观看 | 99亚洲视频| 免费毛片视频网站 | 男生和女生差差视频 | 成年人免费黄色片 | 成人在线视频一区二区三区 | 国产自在线拍 | 亚洲国产综合视频 | 全部免费毛片在线播放高潮 | 老妇荒淫牲艳史 | 国产超碰人人模人人爽人人添 | 中文字幕av日韩 | 999热视频| 狠狠干夜夜 | 高跟鞋av | 丰满女邻居的色诱4hd | 高跟肉丝丝袜呻吟啪啪网站av | 免费一级做a爰片久久毛片潮 | 国产大片中文字幕 | 美女喷液视频 | 伊人网在线观看 | 免费av小说| 麻豆影视在线观看 | 国产乱子伦一区二区 | 天天草综合 | 免费一二区 | 欧美性欧美zzzzzzzzz | 狂野欧美性猛交xxⅹ李丽珍 | 国产99久一区二区三区a片 | 岛国一区二区 | 国产小视频在线播放 | 在线视频激情小说 | 色综合久久88色综合天天6 | 关秀媚三级 | 91免费网站入口 | 香蕉视频黄色在线观看 | 精品午夜福利视频 | 久久艹在线观看 | 日本人妖japanesexxx | 宅男av| 在线看中文字幕 | 亚洲精品一区二区三区蜜桃久 | 成人高潮片免费网站 | 干欧美少妇 | 欧美午夜激情视频 | h在线观看视频 | 亚洲生活片 | 影音先锋男人天堂 | 日本黄色视屏 | 黄色免费一级片 | 五月天男人天堂 | 夜夜视频 | 免费黄色网址在线观看 | 都市激情男人天堂 | 国产,日韩,欧美 | 1024欧美 | 手机在线看永久av片免费 | 日韩一级在线视频 | 天堂8中文 | 天天干天天摸天天操 | 青青毛片 |