Python DAY 1| 学习笔记

简介: 快速学习 Python DAY 1。

开发者学堂课程【面向运维的 python 脚本速成 -1024程序员节创造营公益课Python DAY 1】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/895/detail/14305


Python DAY 1

 

目录:

一、 Bash 和 Python 的对比

二、 为什么用 python?

三、 Python 的基本安装

四、 Python 的核心语法回顾 – 注释

五、 Python 的核心语法回顾 – 定义变量

六、 Python 的核心语法回顾 – 输入内容

七、 Python 的核心语法回顾 – 输出内容

八、 Python 的核心语法回顾 – IF 逻辑

九、 Python 的核心语法回顾 – 文件读取

十、 Python 的核心语法回顾 – 定义函数

十一、 Hello world 回顾

十二、 sys 模块简介

十三、 input 获取输入

十四、 列出目录下的内容

十五、 高级文件名搜索

十六、 获取目录下文件的属性

十七、 创建目录

十八、 删除目录或文件

十九、 打包和解压文件

 

一、 Bash 和 Python 的对比

image.png

 

二、为什么是 Python?

l 大趋势下, 运维工程师需要掌握一门开发语言,以便更好的和研发工程师配合

l Python 是一门脚本语言,可以帮助运维工程师以 Bash 的基础,快速完成开发

l Python 应用场景较广,可以编写 B/S 模式的应用,也可以编写 C/S 模式应用,还可以编写脚本 CLI

l 大量的运维工具都使用 Python 或为 Python 提供了很好的支持 (saltstack、fabric、python-libvirt、supervisor、openstack)

 

三、Python 的基本安装

l Python 官网可安装

l 本地的包管理器可以安装 apt install python / yum install python

l 源码安装

 

四、Python 的核心语法回顾 – 注释

#!/usr/bin/python3#!/bin/bash

# 第一个注释#This is a single-line comment in Bash Script.

# 第二个注释echo "Enter your name:"

read name

'''echo  

第三注释#echo output, its also a single line comment

第四注释echo "The current user name is "$name""

'''#This is another single line comment 

"""

第五注释

第六注释

"""

print ("Hello, Python!")

 

五、Python 的核心语法回顾 – 定义变量

word = '字符串'Variable_name=value

sentence = "这是一个句子。"

paragraph = """这是一个段落,

可以由多行组成"""

 

六、Python 的核心语法回顾 – 输入内容

Python:

str = input(“please input:”)

bash:

echo “please input:”

read str

 

七、Python 的核心语法回顾 – 输出内容

print(”abc”)

echo $abc

 

八、Python 的核心语法回顾 – IF 逻辑

if condition_1:

statement_block_1

elif condition_2:

statement_block_2

else:

statement_block_3

if [ condition ];

then

<if block commands>

else

<else block commands>

Fi

 

九、Python 的核心语法回顾 – 文件读取

file = open(“filename”)

lines=f.read()

print(lines)

content=`cat filename`

 

十、Python 的核心语法回顾 – 定义函数

def functionname( parameters ):

"函数_文档字符串"

function_suite

return [expression]

[ function ] funname [()]

{

action;

[return int;]

}


十一、Hello world 回顾

1.输出 hello world 文本。 使用 print 函数输出文本。

2.让用户输入名字,然后输出带名字的问候语。 使用 input 函数获取用户的输入,使用变量保存输入值。

print('hello world')

name = input('Please tell me your name:')

print('Hello and welcome', name)

input 函数获取运行环境中用户的输入,程序挂起等待输入完成。

print 函数提供了往标准输出打印指定的内容。

•读取文件的内置函数是 open(filename, mode),可读取文件内容供处理,也提供了写入文件的方法。

 

十一、sys 模块简介

sys 模块是 Python 标准库内置的,它提供了一些变量和函数,被解释器所使用。

Python 脚本执行时可以传入参数。

python [-bBdEhiIOqsSuvVWx?] [-c command | -m module-name | script | - ] [args]

•代码里获取参数需要通过 sys 模块实现。

import sys

print('Number of arguments:', len(sys.argv))

print('Argument list:', str(sys.argv))

% python3 script-io.py 1 a

Number of arguments: 3

Argument list: ['script-io.py', '1', 'a']

 

十二、open 函数简介

open(file, mode=‘r’, …) 函数打开 file 并返回对应的文件对象。

•默认返回读取的文本内容。

•可指定 mode 用来写入文件而作为输出。

with open('data.txt') as f:

print(f.read())

with open('data.txt', mode='w') as f:

f.write('this is the new content will write to the file')

 

十三、input 获取输入

•函数定义:input([prompt])

prompt 为可选参数,如果指定了 prompt,则 Python 运行时将它输出到标准输出,比如终端 Shell。

•然后程序暂停等待用户的键盘输入,按下回车后继续执行。

•所以录入的内容被读取为字符串。

>>> s = input()

hello

>>> s

'hello'

>>> name = input("What's your name?")

What's your name?AliAli

>>> name

AliAli'

>>>

要读取为数字,则需要调用转换函数。

•有时候需要将输入作为数字。

•请使用转换函数进行转换:

int()

float()

>>> age = input('Enter your age:')

Enter your age:34

>>> dob = 2021 - age

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: unsupported operand type(s) for -: 'int' and 'str'

>>> age = int(input('Enter your age:'))

Enter your age:34

>>> dob = 2021 - age

>>> dob

1987

 

十四、列出目录下的内容

os.listdir 函数

• 返回一个文件名的列表,功能单一。

>>> import os

>>> entries = os.listdir('.')

>>> entries

['hello.py', '.DS_Store', '.venv', '.vscode', 'data', 'fileio.py']

>>>

•新:os.scandir 函数

•返回一个迭代器,元素包含了除文件名以外,还有文件类型、文件属性等信息。推荐使用。

>>> import os

>>> entries = os.scandir('.')

>>> entries

<posix.ScandirIterator object at 0x10cd4f340>

>>> entries.close()

>>> with os.scandir('.') as entries:

... for entry in entries:

... print(entry.name)

...

...

...

hello.py

.DS_Store

.venv

.vscode

data

fileio.py

>>>

仅列出目录下的文件

•新:os.scandir 函数

•判断文件属性,过滤选择文件。

>>> from pathlib import Path

>>> basepath = Path(basepath)

>>> basepath

PosixPath('.')

>>> files = (entry for entry in basepath.iterdir() if entry.is_file())

>>> for item in files:

...print(item.name)

...

...

hello.py

.DS_Store

fileio.py

>>>

 

十五、高级文件名搜索

glob 模块提供了 Unix 风格的路径名模式匹配

>>> import glob

>>> glob.glob('*.py')

['hello.py', 'fileio.py']

>>> for file in glob.iglob('**/*.txt', recursive=True):

... print(file)

...

...

data0.txt

data/data3.txt

data/data2.txt

>>>

 

十六、获取目录下文件的属性

•新:os.scandir 函数

•使用了日期格式化

from datetime import datetime

from os import scandir

def convert_date(timestamp):

d = datetime.utcfromtimestamp(timestamp)

formated_date = d.strftime('%Y-%m-%d‘)

return formated_date

def get_files(path):

dir_entries = scandir(path)

for entry in dir_entries:

if entry.is_file():

info = entry.stat()

print(f'{entry.name}\t Last Modified: {convert_date(info.st_mtime)}')

get_files('./’)

hello.py         Last Modified: 2021-05-13

.DS_Store        Last Modified: 2021-05-13

fileio.py        Last Modified: 2021-05-14

 

十七、创建目录

os.makedir 函数

•可以嵌套多层路径,文件夹已存在会抛出异常

>>> import os

>>> os.mkdir('./data')

Traceback (most recent call last):

File "<input>", line 1, in <module>

os.mkdir('./data')

FileExistsError: [Errno 17] File exists: './data'

>>>

>>>

 

十八、删除目录或文件

os.rmdir 函数删除目录

os.remove 函数删除文件

>>> import os

>>> os.rmdir('data/json')

>>> os.remove('data/data1.txt')

>>> os.rmdir('data')

Traceback (most recent call last):

File "<input>", line 1, in <module>

os.rmdir('data')

OSError: [Errno 66] Directory not empty: 'data'

>>>

 

十九、打包和解压文件

tarfile 模块用来处理 TAR 文件

>>> import tarfile

>>> with tarfile.open('src.tar.gz', mode='w:gz') as tar:

... tar.add('hello.py')

... tar.add('fileio.py')

...

...

>>> with tarfile.open('src.tar.gz', mode='r:gz') as tar:

... for member in tar.getmembers():

... print(member.name)

...

...

... 

hello.py

fileio.py

>>>

相关文章
|
1月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
246 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
1月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
140 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
154 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
1月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
67 1
|
1月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
90 1
|
1月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
51 2
|
1月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
33 1
|
1月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
42 0
【免费分享编程笔记】Python学习笔记(二)
|
1月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
|
1月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
下一篇
无影云桌面