您当前的位置: 首页 >  Python

插件开发

暂无认证

  • 1浏览

    0关注

    492博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Python-常用字符串处理-文件名信息-文件和文件夹存在删除复制-数值类型互转-格式化字符串精度

插件开发 发布时间:2022-05-18 08:35:33 ,浏览量:1

文章目录
    • 1.类型转换
      • 1.1.字符串转为其它类型
      • 1.2.其它类型转为字符串
    • 2.字符串函数
      • 2.1.split-分割
      • 2.2.replace-替换
      • 2.3.分片-冒号截取
      • 2.4.格式化字符串
      • 2.5.首尾裁剪字符-strip
      • 2.6.字符串(数字)补零
      • 2.7.字符串查找
    • 3.文件名处理-分割文件名,扩展名,驱动器和文件夹
    • 4.文件和文件夹是否存在
    • 5.文件操作
      • 5.1.文件删除
      • 5.2.检测文件是否存在
    • 6.文件夹操作
      • 6.1.创建文件夹
      • 6.2.文件夹下文件列表
      • 6.3.文件夹遍历
      • 6.4.文件夹删除
      • 6.5.文件夹复制
    • 7.文件夹和文件常用操作
      • 7.1.打印系统变量和对应文件夹
      • 7.2.搜索系统PATH中是否存在文件
      • 7.3.获取所有文件名含子文件夹
      • 7.4.获取所有文件夹不含子文件夹
      • 7.5.获取所有文件名不含子文件夹
在批处理事务中,文件名字符串的处理是必然面临的一个环节,本文介绍常用的字符串处理函数。

1.类型转换 1.1.字符串转为其它类型 函数名解释int(x [,base ])将x转换为一个整数long(x [,base ])将x转换为一个长整数float(x )将x转换到一个浮点数complex(real [,imag ])创建一个复数repr(x)将对象 x 转换为表达式字符串tuple(s)将序列 s 转换为一个元组list(s)将序列 s 转换为一个列表 1.2.其它类型转为字符串 函数名解释str(x )将对象 x 转换为字符串repr(x )将对象 x 转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象chr(x)将一个整数转换为一个字符unichr(x)将一个整数转换为Unicode字符ord(x)将一个字符转换为它的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串“”.join(list)将一个list连接成字符串 2.字符串函数 2.1.split-分割

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。

str.split(str=“”, num=string.count(str)) str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 num – 分割次数。默认为 -1, 即分隔所有。

2.2.replace-替换

Python replace() 方法把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。

str.replace(old, new[, max]) old – 将被替换的子字符串。 new – 新字符串,用于替换old子字符串。 max – 可选字符串, 替换不超过 max 次 返回字符串中的 old(旧字符串) 替换成 new(新字符串)后生成的新字符串,如果指定第三个参数max,则替换不超过 max 次。

2.3.分片-冒号截取

可以通过中括号加冒号来。

2.4.格式化字符串

a.format函数 format函数可以接受不限个数的参数,位置也可以不按顺序。format中的参数,对应{}的依次替换。可以设置保留精度。

#例句:还有2天放假,我还在坚持学习Python
print("还有{}天放假,我还在坚持学习{}".format(2, "Python"))
#保留精度1位小数
print("还有{:.1f}天放假,我还在坚持学习{}".format(2.23, "Python"))

b.%站位符方法

格式:%[(name)][flags][width].[precision]typecode

n1 = "i am %s age %d"%("hyj",26)
n2 = "i am %(name)s age %(age)d"%{"name":"hyj","age":26}
n3 = "i am \033[45m%(name)s\033[0m"%{"name":"hyj"}
 # \033[45m%s\033[0m包裹的部分可以改变颜色
>>> print("%04d" % 5)
0005
print("%.3f" % 2.3) #小数点后保留三位
2.300

c.还有一种更方便的写法,但是只适合python3.6以上的版本

>>> print(f'{name}的年龄是{age}')
jerry的年龄是19
2.5.首尾裁剪字符-strip

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。 注意:该方法只能删除开头或是结尾的字符,不能删除中间部分的字符。

str = "00000003210Runoob01230000000"; 
print str.strip( '0' );  # 去除首尾字符 0
str2 = "   Runoob      ";   # 去除首尾空格
print str2.strip();

结果:

3210Runoob0123 Runoob

类似功能:lstrip,rstrip。

2.6.字符串(数字)补零

可以使用 zfill() 函数来给字符串补零。

>>> str = "123"
>>> print(str.zfill(8))
00000123

还能把整数转化成字符来使用 zfill() 补零

>>> num = 123
>>> print(str(num).zfill(8))
00000123

对于数字可以使用格式化的方式来进行补零:

>>> number = 123
>>> zfnumber = "%08d" % number
>>> print(zfnumber)
00000123
2.7.字符串查找
  1. find函数

检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则返回-1。

myStr = 'hello world and Python and java and php'
print(myStr.find('and'))  # 12    ---- 从0开始左向右数10个字符加上2个空格,到and的a下标正好是12
print(myStr.find('and', 20, 30))  # 23  ---- 从下标20-30这个区间里查找子串,如果存在就返回下标,不存在返回-1
print(myStr.find('andt'))  # -1 ---- andt子串不存在,返回-1
  1. index函数 检测某个子串是否包含在这个字符串中,如果在返回这个子串开始的位置下标,否则则报异常。
myStr = 'hello world and Python and java and php'
print(myStr.index('and'))  # 12
print(myStr.index('and', 20, 30))  # 23
print(myStr.index('andt'))  # 报错  ----如果index查找子串不存在:报错
  1. count函数 返回某个子串在字符串中出现的次数。
myStr = 'hello world and Python and java and php'
print(myStr.count('and'))  # 3
print(myStr.count('and', 20, 30))  # 1
print(myStr.count('andt'))  # 0  ----如果index查找子串不存在返回0
  1. rfind() 和 rindex()

rfind():和find()功能相同,但查找方向从右侧开始 rindex():和index()功能相同,但查找方向从右侧开始

3.文件名处理-分割文件名,扩展名,驱动器和文件夹
>>> f = 'C:\\X\\Data\\foo.txt'
>>> import os
>>> os.path.basename(f)
'foo.txt'
>>> os.path.dirname(f)
'C:\\X\\Data'
>>> os.path.splitext(f)
('C:\\X\\Data\\foo', '.txt')
>>> os.path.splitext(os.path.basename(f))
('foo', '.txt')
>>> os.path.splitdrive(f)
('C:', '\\X\\Data\\foo.txt')
4.文件和文件夹是否存在

使用pathlib模块,来判断。

from pathlib import Path

my_file = Path("/path/to/file")
if my_file.is_file():
    # 指定的文件存在

if my_file.is_dir():
    # 指定的目录存在

if my_file.exists():
    # 指定的文件或目录存在
5.文件操作 5.1.文件删除

文件存在则删除文件。

import pathlib
import os
#文件存在则删除
def DeleteFile(filename):
    #目标文件存在则删除
    _filedst = pathlib.Path(filename);
    if _filedst.is_file():
        os.remove(filename);
5.2.检测文件是否存在

文件存在则删除文件。

import os
if os.path.exists("demofile.txt"):
  os.remove("demofile.txt")
else:
  print("The file does not exist")
6.文件夹操作 6.1.创建文件夹

递归创建。

# 创建文件夹
def CreateFolder(filename):
    filename = filename.strip()
    filename = filename.rstrip("\\")
    filename = filename.rstrip("/")
    isExists = os.path.exists(filename)
    if not isExists:
        os.makedirs(filename)
6.2.文件夹下文件列表

比如获取字体文件夹下文件和子文件夹(不包含子文件夹信息)。不包括特殊条目’.‘ 和’…‘,即使它们存在于目录中。

def GetFontFolderList():
    fontFolder=r"C:\Windows\Fonts";
    fileList=os.listdir(fontFolder);
    fontNameStr="";
    for filename in fileList:
        fontNameStr=fontNameStr+filename+"\n";
6.3.文件夹遍历
    # root 所指的是当前正在遍历的这个文件夹的本身的地址-父文件夹名称
    # dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录)-文件夹名称
    # files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录)-文件名称
    for root, dirs, files in os.walk(folderName):
        for shortFilename in files:
            srcFullFilename = os.path.join(root, shortFilename);
6.4.文件夹删除

递归删除。

import os
import shutil
train_images_dir='f:\data';
if os.path.isdir(train_images_dir):
    shutil.rmtree(train_images_dir)
os.makedirs(train_images_dir)

6.5.文件夹复制

递归复制。

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False)
7.文件夹和文件常用操作 7.1.打印系统变量和对应文件夹
# coding:utf-8
import time
import os

#打印所有支持的系统目录
def PrintSysCommonPath():
    for path_name in os.environ.keys():
        pathInfo=path_name+"-----------"+os.environ[path_name];
        print(pathInfo);
#PrintSysCommonPath();
7.2.搜索系统PATH中是否存在文件
import time
import os
def SearchPathByName(name):
    PATHStr=os.environ['PATH'];
    pathList=PATHStr.split(";");

    #遍历所有路径
    for tPath in pathList:
        tPath = tPath.replace("\\", "/");
        if not os.path.exists(tPath):#文件不存在则跳过
            continue;

        #获取本文件夹下文件和文件夹
        dirList=os.listdir(tPath);
        for dir in dirList:  # 获取根目录 文件夹和文件
            fullname = tPath + "/" + dir;
            if os.path.isfile(fullname):  # 文件
                if name in fullname:
                    fullname=fullname.replace("\\","/");
                    print(fullname);
#SearchPathByName('100.dll');
7.3.获取所有文件名含子文件夹
import time
import os
def PrintFilenameAfterFilter(folderName):
    for root, dirs, files in os.walk(folderName):  # 获取目录下得所有子目录和文件
        for file in files:  # 遍历目录里的所有文件
            shortFilename = file;
            if 'd.lib' in shortFilename:
                fullname = root + "/" + file;
                fullname = fullname.replace("\\", "/");
                print(shortFilename);
7.4.获取所有文件夹不含子文件夹
#获取所有文件名
import time
import os
def PrintFoldersInFolder(folderName):
    for dir in os.listdir(folderName):  # 获取根目录 文件夹和文件
        fullname=folderName+"/"+dir;
        if os.path.isdir(fullname): # 文件夹
            print(dir);
7.5.获取所有文件名不含子文件夹
#获取所有文件名
def PrintFilesInFolder(folderName):
    for dir in os.listdir(folderName):  # 获取根目录 文件夹和文件
        fullname = folderName + "/" + dir;
        if os.path.isfile(fullname):  # 文件
            print(dir);
关注
打赏
1665481431
查看更多评论
立即登录/注册

微信扫码登录

0.0760s