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

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

 🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅

✒️个人主页:小鹏linux

💊个人社区:小鹏linux(个人社区)欢迎您的加入!

目录

1、python中的os 模块

1.1使用 os 模块对文件操作

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

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

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

1.2.1创建文件夹

1.2.2创建多层目录

1.2.3获取当前目录

1.2.4改变默认目录

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

1.2.6删除文件夹

1.3批量创建

1.4批量修改文件名

2.Python 换行符问题

2.1Python 换行符问题:

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

👑👑👑结束语👑👑👑


1、python中的os 模块

1.1使用 os 模块对文件操作

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

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

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

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

image.gif

概述

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

语法

rename()方法语法格式如下:
os.rename(src, dst)

image.gif

参数

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

返回值

该方法没有返回值

实例

以下实例演示了 rename() 方法的使用:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, sys
# 列出目录
print "目录为: %s"%os.listdir(os.getcwd())
# 重命名
os.rename("test","test2")
print "重命名成功。"
# 列出重命名后的目录
print "目录为: %s" %os.listdir(os.getcwd())

image.gif

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

目录为:

[ '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")

image.gif

概述

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

在Unix, Windows中有效

语法

remove()方法语法格式如下:
os.remove(path)

image.gif

参数

path -- 要移除的文件路径

返回值

该方法没有返回值

实例

以下实例演示了 remove() 方法的使用:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os, sys
# 列出目录
print "目录为: %s" %os.listdir(os.getcwd())
# 移除
os.remove("aa.txt")
# 移除后列出目录
print "移除后 : %s" %os.listdir(os.getcwd())

image.gif

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

目录为:

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

移除后 :

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

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

1.2.1创建文件夹

不能创建./小鹏/test/hehe

1.2.2创建多层目录

import os
os.makedirs(" 小鹏/ 小李/ 小王")

image.gif

1.2.3获取当前目录

import os
os.getcwd()

image.gif

1.2.4改变默认目录

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

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

image.gif

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

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

image.gif

1.2.6删除文件夹

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

import os
os.rmdir(" 小鹏")

image.gif

 删除不为空的目录

import shutil
shutil.rmtree(“aa”)

image.gif

1.3批量创建

import os
os.mkdir("./test")
os.chdir("./test")
print(os.getcwd())
i = 1
while i<=10:
    open("人民的名义-%d.avi"%i,"w")
    i+=1
print("创建完毕")

image.gif

1.4批量修改文件名

import os
os.chdir("./test")
i = 1
while i<=10:
    os.rename("人民的名义-%d.avi"%i,"[小鹏出品]-人民的名义-%d.avi"%i)
    i+=1

image.gif

import os
#得到要批量修改的目录名
folder = input("请输入您要批量修改的文件目录名称:")
os.chdir(folder)
#得到文件夹下所有文件名
fileNames = os.listdir()
#遍历文件夹下所有文件并修改名称
for fileName in fileNames:
    print(fileName)
    #新名字
    newFileName = "[宏福出品]-"+fileName
    os.rename(fileName,newFileName)
print("重命名后的文件:")
for fileName in os.listdir():
    print(fileName)

image.gif

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的编译器会自动将物理行中的换行符去掉。一般情况下,在[],(),{}中的不同物理行都会被当成一个逻辑行看待。例如:

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

image.gif

甚至可以在括号内加注释,例如:
a = (1,#注释可以放在这
    2,
    3)
print(a)
(1, 2, 3)
a = {'key1':1, # 这是一个{} 的例子
    'key2':2}
print(a)
{'key1': 1, 'key2': 2}
a = {'key1'# 也可以这样用
     :1,
    'key2':2}
print(a)
{'key1': 1, 'key2': 2}

image.gif

函数的参数由于是在()之内,所以也可以这样操作
def my_fun(a, #函数也可以这样断行
           b,c):
    print(a,b,c)
my_fun(10,20,30)
my_fun(10,# 也可以这样调用
      20,
      30)
10 20 30
10 20 30

image.gif

但是如果在非括号中,则需要用 \ 当作转义符,例如:
a = 20
b = 30
c = 40
if a>5 and b>10 and c>20:
    print('a={},b={},c={}'.format(a,b,c))
# 也可以这样写
if a>5 \
and b>10 \
    and c>20: #注意,这里 \ 后的缩进并不重要,因为编译器把这多个物理行当成一个逻辑行了
    print('a={},b={},c={}'.format(a,b,c))
a=20,b=30,c=40
a=20,b=30,c=40

image.gif

对于字符串,如果用三个单引号,或者三个双引号包括的字符串,那么中间的所以换行符都会保留,例如:
a = '''this is a string'''
a
'this is a string'
print(a)
this is a string
a = '''this is
a string''' # 这里 is后边的换行符将被保留
a # 注意is 后边的换行符\n
'this is\na string'
print(a) # 打印出来的话,注意是两行
this is
a string

image.gif

如果不想保留换行符,需要用单引号'',但是需要转义符 \,如下:
a = 'this is \
a string'
a # 注意a中没有换行符
'this is a string'
print(a) # a中没有换行符
this is a string

image.gif

如果需要在字符串中包含 \,则需要用 \\。
a = 'this is a \\ string' #用 \\ 来表示\
a # 这时候看到两个 \ (\\),但是不要慌,因为print出来就对了
'this is a \\ string'
print(a) # print a之后,只有一个 \
this is a string

image.gif

👑👑👑结束语👑👑👑

image.gif

目录
相关文章
|
7天前
|
运维 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot 是阿里云推出的一款操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行和系统运维调优等功能。通过简单的命令行操作,用户可以快速获取所需信息并执行任务,极大提升了Linux系统的使用效率。安装步骤简单,只需在阿里云服务器上运行几条命令即可完成部署。使用过程中,OS Copilot不仅能帮助查找命令,还能处理文件和复杂场景,显著节省了查找资料的时间。体验中发现,部分输出格式和偶尔出现的英文提示有待优化,但整体非常实用,特别适合Linux初学者。
51 10
|
3月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
158 62
|
6天前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
60 32
|
2月前
|
Python
Python Internet 模块
Python Internet 模块。
133 74
|
1月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
116 23
|
1月前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
137 2
OS Copilot-操作系统智能助手-Linux新手小白的福音
|
3月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
141 63
|
1月前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
75 7
|
3月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
3月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
133 61

热门文章

最新文章