传参
cmd
在cmd中,传参数给脚本可以通过在命令行中的脚本名称后添加参数来实现。例如,如果脚本名称为myscript.bat
,那么可以使用以下命令传递参数:
myscript.bat arg1 arg2 arg3
脚本可以通过%1
、%2
、%3
等参数变量来获取传递的参数值,例如可以在脚本中使用以下代码来获取传递的第一个参数:
echo %1
python
Python 可以通过命令行参数传递参数给脚本。可以使用 sys.argv
获取命令行参数的列表。
示例如下:
import sys
print('命令行参数:', sys.argv)
假设将上面的代码保存为 test.py
,那么可以通过下面的命令行执行此脚本并传递参数:
$ python3 test.py hello world
程序的输出将是:
命令行参数: ['test.py', 'hello', 'world']
其中第一个参数 test.py
是脚本文件名,后面的 'hello'
和 'world'
是传递的参数。可以通过 sys.argv[1:]
获取后面的参数列表,也可以通过具体的索引获取某个参数。
powershell
使用 $args
变量来传递参数给脚本。
例如,以下是一个简单的 PowerShell 脚本,它将两个数相加并显示结果:
# Add.ps1
$sum = $args[0] + $args[1]
Write-Host "The sum of $args[0] and $args[1] is $sum."
你可以使用以下命令行来调用这个脚本并传递两个参数:
powershell -ExecutionPolicy RemoteSigned -File .\Add.ps1 2 3
输出将会是:
The sum of 2 and 3 is 5.
其中 $args[0]
和 $args[1]
分别代表第一个和第二个参数。对于更多参数,可以使用 $args[2]
、$args[3]
,以此类推。如果要传递命名参数,可以使用 $args
数组的索引来获取参数的值,或者直接使用参数名称。例如:
# Greet.ps1
param(
$name,
$message
)
Write-Host "$message, $name!"
使用以下命令行来调用这个脚本并传递两个参数:
powershell -ExecutionPolicy RemoteSigned -File .\Greet.ps1 -name "John" -message "Hello"
输出将会是:
Hello, John!
在这个示例中,param
块定义了两个命名参数 $name
和 $message
。在脚本中,可以通过这些参数进行操作。使用命名参数时,你可以像上面一样通过索引来获取它们的值,或者直接使用参数的名称来获取它们的值。
shell
Shell 可以通过两种方式传递参数给脚本:
- 命令行参数
Shell 脚本可以接受命令行参数,通过 $n
来引用传递给脚本的第 n 个参数,其中 $0
表示脚本本身的名称。例如:
#!/bin/sh
echo "脚本名称为:$0"
echo "第一个参数为:$1"
echo "第二个参数为:$2"
echo "所有参数为:$@"
在命令行执行脚本时,可以输入参数来传递给脚本:
$ ./test.sh foo bar
脚本名称为:./test.sh
第一个参数为:foo
第二个参数为:bar
所有参数为:foo bar
- 读取用户输入
除了命令行参数,Shell 脚本还可以从用户处读取输入。使用 read
命令可以实现从标准输入读取用户输入,例如:
#!/bin/sh
echo "请输入您的名字:"
read name
echo "您好,$name!"
执行脚本后,脚本会等待用户输入名字,并根据输入内容输出问候语:
$ ./test.sh
请输入您的名字:
Tom
您好,Tom!
条件语句
cmd
cmd的条件语句有以下几种:
- if语句:if语句用来判断某个条件是否成立,如果成立则执行指定的命令。if语句常用的判断条件有文件是否存在、值是否相等等。常见的语法格式如下:
if [not] exist file command
if [not] errorlevel number command
if [not] string1==string2 command
- for语句:for语句可以用来循环遍历一组数据,并对每个数据进行相应的操作。常见的语法格式如下:
for %variable in (set) do command [command-parameters]
- switch语句:switch语句根据指定的值,选择性地执行某个命令。常见的语法格式如下:
switch value(
case value1 command1
case value2 command2
…
default commandN
)
- while和do-while语句:while语句用于重复执行一组命令,直到满足指定的条件为止;do-while语句与while语句类似,但是它会先执行一次命令,然后再判断条件是否成立。常见的语法格式如下:
while condition do command
do command while condition
这些条件语句可以让cmd在特定的条件下执行不同的命令,从而实现复杂的逻辑处理。
写文件
cmd&shell
在cmd和shell中,可以使用重定向符号来将文本输出到文件中。具体方法如下:
- 使用 “>” 符号将文本输出到一个新文件中。例如:
echo "Hello World!" > hello.txt
这将会创建一个新文件 hello.txt,并将文本 “Hello World!” 输出到文件中。
- 使用 “>>” 符号可以将文本追加到已有的文件末尾。例如:
echo "This is a new line" >> hello.txt
这将会在 hello.txt 文件的最后一行追加文本 “This is a new line”。
需要注意的是,如果文件不存在,使用 “>” 符号会创建一个新文件;如果文件已存在,会将原文件内容覆盖。而使用 “>>” 符号则会将新文本追加到文件末尾,不会影响原有内容。
python
使用 with open
可以非常方便地将文本内容写入文件,同时还可以确保文件最终能够正确地关闭,避免未关闭文件导致的问题。具体语法如下:
with open('file.txt', 'w') as f:
f.write('Hello World!')
上面的代码就将字符串 “Hello World!” 写入了名为 “file.txt” 的文件中,并且该文件已自动关闭。如果想要追加文本内容,则将第二个参数改为 “a” 即可。
with open('file.txt', 'a') as f:
f.write('Hello Python!')
这里的 with open
语句称为上下文管理器,它在执行完语句块后会自动调用文件对象的 .close()
方法关闭文件。这个方法是文件对象的一个内置方法,作用是关闭打开的文件,释放系统资源。如果不使用上下文管理器,则需要在代码末尾手动关闭文件,否则文件会一直保持打开状态。
读文件
cmd
读取文本:
使用type命令可以读取文本文件的内容,语法如下:
type 文件名
例如,读取一个名为test.txt的文本文件:
type test.txt
读取指定行:
使用for /f命令可以读取文本文件的指定行,语法如下:
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" 文件名') do if "%%a"=="指定行号" echo %%b
其中,“tokens=1*”表示将行号和行内容分别存储到变量%%a和%%b中,“delims=:”表示使用冒号作为分隔符,“findstr /n”命令会将每行的行号添加到行首。例如,读取test.txt的第3行:
for /f "tokens=1* delims=:" %a in ('findstr /n "^" test.txt') do if "%a"=="3" echo %b
shell
读取文本文件的内容可以使用以下命令:
cat filename.txt
其中,filename.txt为需要读取的文本文件名。
指定行读取文本文件内容可以使用以下命令:
sed -n '行号p' filename.txt
其中,行号为需要读取的行的行号,可以是单个行号,也可以是一段行号范围。例如:
sed -n '10p' filename.txt #读取第10行内容
sed -n '5,10p' filename.txt #读取第5到10行内容
python
可以使用以下代码:
with open('filename.txt', 'r') as f:
content = f.read()
print(content)
在with语句的作用域内,打开文件并赋值给变量f。使用f.read()
方法读取文件内容,并将其赋值给变量content。最后打印content。当with语句执行完毕时,文件自动关闭。
可以使用以下代码读取文本文件的第一行
:
with open("filename.txt", "r") as f:
first_line = f.readline()
print(first_line)
其中,“filename.txt” 是你要读取的文本文件的名称,“r” 表示读取模式。在 with 块中,调用 readline() 方法来读取文件的第一行,然后将其保存在 first_line 变量中,并打印输出。
CSV
python
读取csv文件可以使用pandas库中的read_csv函数,可以通过指定参数来读取指定的列和行。
读取指定列:
import pandas as pd
# 读取指定列
df = pd.read_csv('test.csv', usecols=['col1', 'col2'])
print(df.head())
读取指定行:
import pandas as pd
# 读取指定行
df = pd.read_csv('test.csv', nrows=10)
print(df.head())
读取指定行和列:
import pandas as pd
# 读取指定行和列
df = pd.read_csv('test.csv', usecols=['col1', 'col2'], nrows=10)
print(df.head())