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 压缩解压缩操作

可以参考http://blog.csdn.net/luoshengkim/article/details/46647423

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操作,最后还要说明一点,对这种非强类型的语言,在定义变量名称以及传入参数的时候一定要小心,否则会出现一些莫名其妙的错误。

原文地址:https://www.cnblogs.com/hackerer/p/10823070.html

时间: 2024-10-07 19:26:12

python基础操作以及hdfs操作的相关文章

python学习笔记-(七)python基础--集合、文件操作&函数

本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: 1 2 3 4 >>> list_1 = [1,4,4,5,6,7,9,10] >>> list_1 =set(list_1) >>> print(list_1) {1, 4, 5, 6, 7, 9, 10} 2)关系测试:测试两组数据之间的关系,交集.并集.

python基础篇08-文件操作

文件操作基本流程 打开文件,得到文件句柄并赋值给一个变量: 通过句柄对文件进行操作 关闭文件  现有文件如下: 1 昨夜寒蛩不住鸣. 2 惊回千里梦,已三更. 3 起来独自绕阶行. 4 人悄悄,帘外月胧明. 5 白首为功名,旧山松竹老,阻归程. 6 欲将心事付瑶琴. 7 知音少,弦断有谁听. 对上述文件进行操作: 1 f = open('小重山','r',encoding='utf8') #打开文件,读模式 2 data=f.read()#获取文件内容3 print(data)4 f.close

19、python基础学习-字符串及操作

1 #!/usr/bin/env python 2 #__author: hlc 3 #date: 2019/5/26 4 # 字符串是以单引号'或者双引号"括起来的任意文本,例如:'asd',"123" 5 # '"不是字符串的一部分,如果需要作为字符串的一部分,需要在单引号外面加上双引号,如:"it's a Good !" 6 7 #创建字符串 8 # var1 = "Hello word" 9 # var2 = 'pyt

python基础之列表常用操作及知识点小结

列表(list) List(列表) 是 Python 中使用最频繁的数据类型.列表可以完成大多数集合类的数据结构实现.它支持字符,数字,字符串甚至可以包含列表(所谓嵌套).列表用[ ]标识,是python最通用的复合数据类型. 常用操作 L=[1,2,3,'xyn',5] 代码 含义 输出 L.append(‘a’) 在L列表后追加元素 [1,2,3,’xyn’,5,1,’a’] L.insert(0,’a’) 在L[0]的位置插入’a’ [‘a’,1,2,3,’xyn’,5,1] L.pop(

Python基础-list的各种操作

以下是list数据类型的各种操作 list.append(x)    给list末尾添加一个元素 Add an item to the end of the list; equivalent to a[len(a):] = [x]. list.extend(L)    添加一组数据到list 的末尾 Extend the list by appending all the items in the given list; equivalent to a[len(a):] = L. list.in

Python基础:文件的操作

一.python可以在不导入任何模块的情况下对文件完成读.写.追加,替换(稍复杂). 二.打开文件: 1.f = open('text.txt') 这种方式打开,操作完后需要使用f.colse()关闭. 2.with open('text.txt') as f: 这种方式打开,运行完系统自动关闭,回收内存.建议使用. 三.文件打开模式: python操作文件的时候,默认是只读的,需要指定各种模式才能进行相应的操作,模式列表: r 以只读方式打开文件 r+ 先读,再写模式 rb 以二进制格式只读打

Python基础之window常见操作

一.window的常见操作: cd c:\ #进入C盘d: #从C盘切换到D盘 cd python #进入目录cd .. #往上走一层目录dir #查看目录文件列表cd ../.. #往上上走一层目录 二.常见的文件后缀名: .txt 记事本文本文件.doc word文件.xls excel文件.ppt PPT文件.exe 可执行文件.jpg .png .jpeg 图片.gif 动态图片.pdf PDF文件.mp4 .avi 视频.py python文件.java java 文件.c .h c源

Python基础之文件的操作

#文件的操作 #创建文件fc=open("E:/新建文件夹/a.mp8","w")#参数1表示文件路径以及名称,参数2表示文件的操作方法fc=file("E:/新建文件夹/a.mp9","w") #打开文件 fo=open("E:/新建文件夹/a.mp9","w")#若没有此文件open表示创建并打开fo=file("E:/新建文件夹/a.mp9","w&q

【python基础】之文件操作

一.文件操作的基本流程 #打开文件,得到文件句柄并赋值给一个变量 f = open('小重山','r',encoding='utf-8') #通过句柄对文件进行操作 print(f.read()) #关闭文件 f.close() 二.文件打开模式 r,只读模式(默认).w,只写模式.[不可读:不存在则创建:存在则删除内容:]a,追加模式.[可读: 不存在则创建:存在则只追加内容] "+" 表示可以同时读写某个文件 r+,可读写文件 [可读:可写:可追加] :光标默认在0位置,最后位置开