- 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.获取所有文件名不含子文件夹
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.字符串查找
- 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
- 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查找子串不存在:报错
- 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
- 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);