- 本书赞誉
- 前言
- 目标读者
- 不适合阅读本书的读者
- 本书结构
- 什么是数据处理
- 遇到困难怎么办
- 排版约定
- 使用代码示例
- 致谢
- 第 1 章 Python 简介
- 第 2 章 Python 基础
- 第 3 章 供机器读取的数据
- 第 4 章 处理 Excel 文件
- 第 5 章 处理 PDF 文件 以及用 Python 解决问题
- 第 6 章 数据获取与存储
- 第 7 章 数据清洗:研究、匹配与格式化
- 第 8 章 数据清洗:标准化和脚本化
- 第 9 章 数据探索和分析
- 第 10 章 展示数据
- 第 11 章 网页抓取:获取并存储网络数据
- 第 12 章 高级网页抓取:屏幕抓取器与爬虫
- 第 13 章 应用编程接口
- 第 14 章 自动化和规模化
- 第 15 章 结论
- 附录 A 编程语言对比
- 附录 B 初学者的 Python 学习资源
- 附录 C 学习命令行
- 附录 D 高级 Python 设置
- 附录 E Python 陷阱
- 附录 F IPython 指南
- 附录 G 使用亚马逊网络服务
- 关于作者
- 关于封面
C.2 Windows cmd/PowerShell
Windows 命令行(现在再加上 PowerShell,https://en.wikipedia.org/wiki/Windows_PowerShell),或者叫 cmd,是一个功能强大的基于 DOS 的程序。在不同版本的 Windows 和 Windows 服务器中,语法是完全相同的。无论你学的是 Python 还是其他语言,学会这些语法都可以让你成为一个更加优秀的程序员。
C.2.1 跳转命令
用 cmd 浏览文件非常简单。首先打开 cmd 程序查看当前目录。输入:
echo %cd%
这个命令的作用是,告诉 cmd 你想要返回(或输出)%cd%,即当前目录(current directory)。你应该会看到像这样的输出:
C:\Users\Katharine>
想列出当前目录的所有文件,输入以下代码:
dir
你应该会看到类似这样的输出:
13.03.2015 16:07 <DIR> .ipython 11.09.2015 19:05 <DIR> Contacts 11.09.2015 19:05 <DIR> Desktop 11.09.2015 19:05 <DIR> Documents 11.09.2015 19:05 <DIR> Downloads 11.09.2015 19:05 <DIR> Favorites 10.02.2014 15:15 <DIR> Intel 11.09.2015 19:05 <DIR> Links 11.09.2015 19:05 <DIR> Music 11.09.2015 19:05 <DIR> Pictures 13.03.2015 16:26 <DIR> pip 11.09.2015 19:05 <DIR> Saved Games
dir 也有许多可用的选项(http://ss64.com/nt/dir.html),可以排序、分组或显示更多信息。我们来看一下 Desktop 文件夹。
dir Desktop /Q
我们让 cmd 显示 Desktop 目录中的所有文件,以及这些文件的所有者。你应该会看到文件名的前半部分是每个文件的所有者(比如 MY-LAPTOP\Katharine\backupPDF)。在查看文件夹和文件时这一命令非常有用。还有许多好用的选项,可以显示子文件夹,或者按最后一次修改的时间戳排序。
输入下列代码跳转到 Desktop 文件夹:
chdir Desktop
现在输入 echo %cd% 查看当前目录,你应该会发现与之前的不同。想跳转到上一级文件夹,只需输入 ..。例如,如果我们想跳转到当前目录的上一级文件夹,可以输入:
chdir ..
你还可以把多个“上一级文件夹”符号连起来(chdir ..\.. 可以跳转到上两级文件夹,以此类推)。根据你的文件结构不同,如果当前文件夹没有上一级目录的话,你可能会得到一个错误(比如你位于文件系统的根目录下)。
想返回 home 目录,只需输入:
chdir %HOMEPATH%
你应该回到了我们开始所在的第一个文件夹。现在我们可以用 cmd 在目录间跳转,下面我们继续学习创建、复制和修改文件。
C.2.2 修改文件
首先,我们来创建一个可用于修改的新文件:
echo "my awesome file" > my_new_file.txt
用 dir 查看文件夹中的文件,现在你应该可以看到 my_new_file.txt。在文本编辑器中打开这个文件,你可以看到文件里面写的是“my awesome file”。如果你用的是 Atom,你可以在 cmd 中直接打开 Atom(参见 C.1.2 节)。
有了这个文件,我们试着将其复制到一个新文件夹中:
copy my_new_file.txt Documents
现在用下列命令列出 Documents 文件夹中所有文件:
dir Documents
我们应该会看到,已经将 my_new_file.txt 成功复制到这里。
你可以用 Tab 键自动补全文件名和路径,简化输入。试着输入 copy my,然后按 Tab 键。cmd 应该能够猜出你想输入的是 my_new_file.txt 文件,自动补全文件名。
我们还想移动文件或重命名文件。想用 cmd 移动文件,我们可以用 move 命令。试着输入:
move Documents\my_new_file.txt Documents\my_newer_file.txt
如果现在列出 Documents 目录下的文件,你应该会发现没有 my_new_file.txt 了,只有一个 my_newer_file.txt。move 可用于重命名文件(正如上面我们所做的那样)或者移动文件或文件夹。
最后,你可能想要删除不需要的文件。想用 cmd 做到这一点,你可以用 del 命令。试着输入:
del my_new_file.txt
现在查看当前文件夹下的文件,你应该看不到 my_new_file.txt 了。注意,这个命令会完全删除文件。只有在你完全不需要这个文件时才能用这个命令。定期做硬盘备份是很有用的,以防出现任何问题。
我们已经学过了修改文件,下面我们来学习如何在 cmd 中运行文件。
C.2.3 运行文件
想要在 Windows cmd 中运行文件,通常需要输入语言的名字,然后输入文件路径。例如,想运行一个 Python 文件,你需要输入:
python my_file.py
只要 my_file.py 位于同一文件夹下,就会运行这个文件。只需在 cmd 中输入 .exe 文件的全名和路径,然后按 Enter 键,就可以运行这个文件。
与安装 Python 一样,你需要检查安装好的可执行文件的安装包和文件路径是否包含在 Path 变量中(详情可查阅 1.2.2 节)。这个变量为 cmd 保存许多可执行字符串。
想了解更多强大的命令行运行命令,我们推荐学习 Windows PowerShell——一种强大的脚本语言,用来编写脚本并用简单的命令行来运行这些脚本。计算机世界(Computerworld)有一篇很好的 PowerShell 入门文章(http://www.computerworld.com/article/2512066/microsoft-windows-introduction-to-windows-powershell.html)。
想要在命令行中运行安装好的程序,你可以使用 start 命令。试着输入:
start "" "http://google.com"
这个命令应该会打开你的默认浏览器,然后跳转到 Google 首页。更多内容可查阅 start 命令的文档(https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/start.mspx?mfr=true)。
我们已经学习了用命令行如何运行文件,下面研究如何搜索和查找计算机中的文件和文件夹。
C.2.4 利用命令行进行搜索
首先下载一个可用的语料库。如果你用的是 Windows Vista 或更新的版本,你应该能够运行 PowerShell 命令。试着输入下列命令来加载 PowerShell:
powershell
你应该会看到类似这样的新提示符:
Windows PowerShell ... PS C:\Users\Katharine>
现在我们已经进入了 PowerShell,我们来下载一个用于查找的文件(注意,这两行命令应该在同一行中输入,被分成两行是为了适应页面宽度):
Invoke-WebRequest -OutFile C:\Downloads\text.zip http://corpus.byu.edu/glowbetext/samples/text.zip
如果你安装的 PowerShell 不是 3.0 版或更高版本,上面这个命令会报错。如果有报错的话,尝试输入下面这个命令,可适用于更早版本的 PowerShell:
Invoke-WebRequest -OutFile C:\Downloads\text.zip http://corpus.byu.edu/glowbetext/samples/text.zip
这些命令是用 PowerShell 将一个单词语料库下载到计算机中。我们创建一个新目录,可以将解压后的文件放在里面:
mkdir Downloads\text_examples
现在我们要向 PowerShell 中添加一个新函数,用来提取压缩的文件。输入下列命令:
Add-Type -AssemblyName System.IO.Compression.FileSystem function Unzip { param([string]$zipfile, [string]$outpath) [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath) }
定义好了这个函数,我们可以用它来解压文件。试着将下载内容解压到新文件夹中:
Unzip Downloads\text.zip Downloads\text_examples
输入 exit 就可以退出 PowerShell。提示符应该会变回 cmd 的标准提示符。输入 dir Downloads\text_examples,你应该会看到许多下载好的语料库文本文件。我们用 findstr 在这些文件中查找:
findstr "neat" Downloads\text_examples\*.txt
你应该会看到控制台中滚动输出了许多文本。它们是包含单词 neat 的文本文件中的匹配行。
有时你想搜索特定的文件名,而不是文件中的字符串。你可以用 dir 命令加一个过滤器(filter)来做到这一点:
dir -r -filter "*.txt"
这应该会找出主文件夹下所有子文件夹中的 .txt 文件。如果你需要继续在这些文件中搜索,可以使用管道操作。| 字符可以将第一个命令的输出通过管道传递给下一个命令。比如说,我们可以用管道找到包含特定函数名的所有 Python 文件,或找到包含特定国家名称的所有 CSV 文件。我们试一下,将 findstr 的输出通过管道传递给 find 命令:
findstr /s "snake" *.txt | find /i "snake" /c
这段代码的作用是,首先找出包含单词 snake 的文本文件,然后利用 find 计算单词 snake 在这些文件中出现的次数。可以看出,学习更多 cmd 命令及其用法将有助于大大简化数据处理人员和开发人员的很多任务,如搜索文件、运行代码、管理工作等。关于这一话题,本附录介绍了一些内容,你可以在此基础上深入学习。
C.2.5 更多资源
想要学习如何将 cmd 用于日常编程和数据处理工作,有许多可以查找 cmd 命令的优秀在线资源(http://ss64.com/nt/)。
如果你想学习更多 PowerShell 的知识,以及如何用 PowerShell 创建强大的脚本并用于 Windows 服务器和计算机,可以阅读一些教程,如微软的 Getting Started with PowerShell 3.0 教程(https://mva.microsoft.com/en-us/training-courses/getting-started-with-powershell-30-jump-start-8276?l=r54IrOWy_2304984382)。你还可以参考 O'Reilly 出版的 Windows PowerShell Cookbook(http://shop.oreilly.com/product/0636920024132.do)开始编写你的第一个脚本。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论