0


【python】OS模块的用法及python换行符问题

🌍个人简介

  1. 🍁作者简介:大家好,我是姐姐划船吗?运维领域创作者,🏅阿里云ACE认证高级工程师🏅
  2. ✒️个人主页:姐姐划船吗?🔥
  3. 🕺支持我:点赞👍+收藏⭐️+留言📝
  4. 🫀格言:你未必出类拔萃,但一定与众不同!🔥

🧊系列专栏:
🎒 阶段一:windows基础
🎒 阶段二:Linux基础知识
🎒 阶段三:shell基础+shell高级
🎒 阶段四:学会python,逆天改命
🎒 阶段五:Linux网络服务
🎒 阶段六:集群原理及架构
🎒 阶段七:云计算虚拟化技术

学习目标:

1、python中的os 模块

1.1使用 os 模块对文件操作

有些时候,需要对文件进行重命名、删除等一些操作,Python 的 os 模块中都有这么功能

1.1.1使用 os 模块对文件重命名 rename()

rename(需要修改的文件名, 新的文件名)

import os

os.rename(" 程序猿自身修养.txt", " 程序员自身修养.txt")

概述

os.rename() 方法用于命名文件或目录,从 src 到 dst,如果dst是一个存在的目录, 将抛出OSError。

语法

**rename()**方法语法格式如下:

  1. os.rename(src, dst)

参数

  • src -- 要修改的目录名
  • dst -- 修改后的目录名

返回值

该方法没有返回值

实例

以下实例演示了 rename() 方法的使用:

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import os, sys
  4. # 列出目录
  5. print "目录为: %s"%os.listdir(os.getcwd())
  6. # 重命名
  7. os.rename("test","test2")
  8. print "重命名成功。"
  9. # 列出重命名后的目录
  10. print "目录为: %s" %os.listdir(os.getcwd())

执行以上程序输出结果为:

目录为:

[ 'a1.txt','resume.doc','a3.py','test' ]

重命名成功

[ 'a1.txt','resume.doc','a3.py','test2' ]

1.1.2使用 os 模块对删除文件 remove()

remove(待删除的文件名)

import os

os.remove(" 程序员自身修养.txt")

概述

os.remove() 方法用于删除指定路径的文件。如果指定的路径是一个目录,将抛出OSError。

在Unix, Windows中有效

语法

**remove()**方法语法格式如下:

  1. os.remove(path)

参数

  • path -- 要移除的文件路径

返回值

该方法没有返回值

实例

以下实例演示了 remove() 方法的使用:

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-
  3. import os, sys
  4. # 列出目录
  5. print "目录为: %s" %os.listdir(os.getcwd())
  6. # 移除
  7. os.remove("aa.txt")
  8. # 移除后列出目录
  9. print "移除后 : %s" %os.listdir(os.getcwd())

执行以上程序输出结果为:

目录为:

[ 'a1.txt','aa.txt','resume.doc' ]

移除后 :

[ 'a1.txt','resume.doc' ]

1.2使用 OS 对文件夹的相关操作:

1.2.1创建文件夹

不能创建./张三/test/hehe

import os

os.mkdir(" 张三")

1.2.2创建多层目录

import os

os.makedirs(" 张三/ 李四/ 王二")

1.2.3获取当前目录

import os

os.getcwd()

1.2.4改变默认目录

进入到某个目录,或者是切换目录

import os

os.chdir("./../")

1.2.5获取目录列表,包含文件和目录

import os

print(os.listdir("./"))

1.2.6删除文件夹

删除目录 path,要求 path 必须是个空目录,否则抛出 OSError 错误

import os

os.rmdir(" 张三")

删除不为空的目录

import shutil

shutil.rmtree(“aa”)

1.3批量创建

import os

os.mkdir("./test")

os.chdir("./test")

print(os.getcwd())

i = 1

while i<=10:

  1. open("人民的名义-%d.avi"%i,"w")
  2. i+=1

print("创建完毕")

1.4批量修改文件名

import os

os.chdir("./test")

i = 1

while i<=10:

  1. os.rename("人民的名义-%d.avi"%i,"[宏福出品]-人民的名义-%d.avi"%i)
  2. i+=1

import os

#得到要批量修改的目录名

folder = input("请输入您要批量修改的文件目录名称:")

os.chdir(folder)

#得到文件夹下所有文件名

fileNames = os.listdir()

#遍历文件夹下所有文件并修改名称

for fileName in fileNames:

  1. print(fileName)
  2. #新名字
  3. newFileName = "[宏福出品]-"+fileName
  4. os.rename(fileName,newFileName)

print("重命名后的文件:")

for fileName in os.listdir():

  1. print(fileName)

2.Python 换行符问题

2.1Python 换行符问题:

先知道结果:

在 linux 和 mac 系统上我们读写文本文件使用二进制方式或者文本方式都可以,因为在处理\n 都是一样的;那么读写文本文件和二进制文件的时候,可以使用 r 和 w 模式或者 rb 和 wb 模式。

在 window 中的换行是\r\n,当我们使用程序以文本方式写入一个\n 的时候,默认会帮我们加上\r,这样打开文件的时候才能得到换行的效果;

所有在 window 上读写文本文件的时候, 建议使用 r 或者 w 模式。

在读写二进制文件的时候,建议用 rb 和 wb 模式。

不同操作系统换行符是不一样的

在处理文本数据的时候体现在不同操作系统处理\r\n 是不一样的

不同操作系统 换行符是不一样的

linux -->\n

unix-->\n

mac--> 老版本(\r)-->\n

windows -->\r\n

对应换行符 windows 遇到\r\n 才换行显示

2.2python中对于长句子换行的问题

首先明确两个概念,物理行和逻辑行。

物理行

物理行是指语句在文本编辑中的一行

逻辑行

逻辑行则是python语句在python编译器里的一行。所以有些很长的语句,为了方便阅读,我们可以把它放到不同的物理行中。但是python在特定情况仍然会把不同物理行当作一个逻辑行,在这种python的编译器会自动将物理行中的换行符去掉。一般情况下,在[],(),{}中的不同物理行都会被当成一个逻辑行看待。例如:

  1. a = [1,2,3,4,5]
  2. print(a)
  3. [1, 2, 3, 4, 5]
  4. a = [1,2,
  5. 3,4,5] # 这个是 [] 内部的换行编译器自动处理为一个逻辑行
  6. print(a)
  7. [1, 2, 3, 4, 5]

甚至可以在括号内加注释,例如:

  1. a = (1,#注释可以放在这
  2. 2,
  3. 3)
  4. print(a)
  5. (1, 2, 3)
  6. a = {'key1':1, # 这是一个{} 的例子
  7. 'key2':2}
  8. print(a)
  9. {'key1': 1, 'key2': 2}
  10. a = {'key1'# 也可以这样用
  11. :1,
  12. 'key2':2}
  13. print(a)
  14. {'key1': 1, 'key2': 2}

函数的参数由于是在()之内,所以也可以这样操作

  1. def my_fun(a, #函数也可以这样断行
  2. b,c):
  3. print(a,b,c)
  4. my_fun(10,20,30)
  5. my_fun(10,# 也可以这样调用
  6. 20,
  7. 30)
  8. 10 20 30
  9. 10 20 30

但是如果在非括号中,则需要用 \ 当作转义符,例如:

  1. a = 20
  2. b = 30
  3. c = 40
  4. if a>5 and b>10 and c>20:
  5. print('a={},b={},c={}'.format(a,b,c))
  6. # 也可以这样写
  7. if a>5 \
  8. and b>10 \
  9. and c>20: #注意,这里 \ 后的缩进并不重要,因为编译器把这多个物理行当成一个逻辑行了
  10. print('a={},b={},c={}'.format(a,b,c))
  11. a=20,b=30,c=40
  12. a=20,b=30,c=40

对于字符串,如果用三个单引号,或者三个双引号包括的字符串,那么中间的所以换行符都会保留,例如:

  1. a = '''this is a string'''
  2. a
  3. 'this is a string'
  4. print(a)
  5. this is a string
  6. a = '''this is
  7. a string''' # 这里 is后边的换行符将被保留
  8. a # 注意is 后边的换行符\n
  9. 'this is\na string'
  10. print(a) # 打印出来的话,注意是两行
  11. this is
  12. a string

如果不想保留换行符,需要用单引号'',但是需要转义符 \,如下:

  1. a = 'this is \
  2. a string'
  3. a # 注意a中没有换行符
  4. 'this is a string'
  5. print(a) # a中没有换行符
  6. this is a string

如果需要在字符串中包含 \,则需要用 \。

  1. a = 'this is a \\ string' #用 \\ 来表示\
  2. a # 这时候看到两个 \ (\\),但是不要慌,因为print出来就对了
  3. 'this is a \\ string'
  4. print(a) # print a之后,只有一个 \
  5. this is a string

👑👑👑结束语👑👑👑

!!!福利重磅来袭!!!

实习渠道哪家强,中国北京找优加!
只要实习相关,找我们,给你一套适合你的解决方案,从简历制作、面试题库、行业资源、模拟面试到大厂资源。

标签: linux 运维 python

本文转载自: https://blog.csdn.net/qq_62294245/article/details/124744856
版权归原作者 姐姐划船吗? 所有, 如有侵权,请联系我们删除。

“【python】OS模块的用法及python换行符问题”的评论:

还没有评论