关闭

Python做数据分析中需要掌握的命令行知识-持续更新中

130人阅读 评论(0) 收藏 举报
分类:

本文用到的数据,可以加QQ跟群主获取:

群名称:PYTHONERS-数据
群   号:663468799
学习python和数据分析推荐地方: www.lynda.com  
获取lynda官网会员的方式:get_lynda_com()


1. 命令行基础


1. pwd 命令行
大多数人通过图形用户界面(GUI)与计算机进行交互,视觉界面如下所示:
这是Mac计算机上的桌面屏幕截图。每个程序都有一个图标,我们可以点击一个来启动相应的程序。在GUI出现之前,与计算机交互的最常用方式是通过命令行界面,我们也将其称为shell终端(我们将在此任务中互换使用这些术语)。命令行界面让我们通过键入命令在文件夹之间切换和启动程序。命令行界面通常比用于编程任务的GUI更快,更强大。
pwd --打印当前文件夹的名臣
当我们pwd在最后一个屏幕上键入时,终端打印出我们所在的文件夹的名称。终端被设计为在目录之间导航和切换。您可能已经使用GUI浏览目录,例如Windows中的资源管理器OS X中的Finder。除了键入命令而不是单击文件夹名称之外,终端可以让我们执行相同的操作。一旦了解终端,您将看到使用它来浏览目录比使用GUI要快得多。
计算机将文件存储在目录或文件夹中。每个目录可以有子目录或文件。现在,我们在dq文件夹中,它是文件夹的子home文件夹。这意味着我们目前的文件夹路径是/home/dq home是存在于文件系统根目录下的文件夹; 认为它是“主”或“原”文件夹。我们通过用正斜杠分隔两个文件夹名称来表示它dqhome文件夹中home/dq我们指出home是在文件系统的根源,带有主要的斜杠 - /home
根目录,或者/是一个特殊的目录,它将导航到文件系统的根目录。我们可以将我们的文件系统看成如下的树:
/
| __home
|
| __dq
home是文件系统根目录下的文件夹,是文件夹中的dq一个文件home夹。
我们可以使用该cd命令切换目录。例如,我们可以键入cd /切换到根目录。
cd  / -- 切换到根目录 

2. 绝对路径和相对路径
当我们键入正斜杠(/)时,终端切换到根目录。任何以路径开始/路径都是与文件系统根部相关绝对路径无论我们在哪个文件夹中,打字cd /home/dq将切换到dq文件夹内的home文件夹中,该文件夹位于文件系统的根目录。
另一方面,相对路径是相对于我们目前的目录。这些不是以正斜杠开始。home例如,如果我们在文件夹中,打字cd dq会将我们移动到/home/dq如果我们在/文件系统的根()中,键入cd dq会导致错误,因为shell认为我们要求dq当前目录(不存在)中的子home文件夹,而不是文件夹中的子文件夹。
cd qd 返回home/dq
whoami --输入whoami时候,会返回用户名称。
cd / --返回根不睦
cd ~ --返回home目录
 mkdir --创建一个文件夹
mkdir -v test --- 创建一个文件夹,并显示详细的信息
mkdir --help -- 获取mkdir的帮助文档
ls -l ---返回格式化好的文件及文件夹目录 
rmdir -删除文件夹, 注意只能删除空的文件夹,如果要删除含有文件和文件夹的文件夹,使用如下:
rm demo -r


2. 命令行操作文件


1. touch 创建文件
touch demo.py

2. 使用echo标准流
echo "hello world" 

3. 重新定向标准流
echo "hello world" >hello.py

4. 编辑文件
nano test.txt   ctrl +x退出

5. 文件权限简介

Unix中,有三种权限:owner , group, everyone
  • read - 能够查看文件中的内容(如果在文件夹中定义了查看文件夹中的文件的功能)
  • write - 修改文件的能力(如果文件夹,删除,修改和重命名文件夹中的文件的能力)
  • execute - 运行文件的能力(一些文件是可执行的,需要此权限才能运行)
可以使用ls -l查看文件及文件夹的权限,比如:
-rw-r--r-- 1 python python 48 10月  6 20:04 hello.py
将此权限行分割:
-          rw-               r--                           r--
忽略     user              Group                     Everyone
r ----读取的权限
w----写入的权限
x -----执行的权限
user 由于是“rw-",所以user有读写的权限,但是没有执行的权限,因为没有X
Group "r--" 只有读取的权限,没有写入和执行的权限
-rw-r--r--

符号法表示权限的方法的缺点是,如果我们要更改权限,我们需要很长时间才能输入更改。我们可以使用更快的方法。0760
八进制表示法允许我们使用4数字代替所有范围的权限,而不是以10符号符号表示字符。8三个权限可能的组合rwx我们可以将每个组合或范围表达为八进制(基数8)计数系统中的单个数字
  • ---:没有权限; 对应于0
  • --x:只执行许可; 对应于1
  • -w-:只写权限; 对应于2
  • -wx:写和执行权限; 对应于3
  • r--:只读权限; 对应于4
  • r-x:读取和执行权限; 对应于5
  • rw-:读写权限; 对应于6
  • rwx:读,写和执行权限; 对应于7
系统将权限字符串-rw-r--r--转换0644
可以使用stat 命令提取文件的八进制权限:
  大小:0             块:0          IO 块:4096   普通空文件
设备:801h/2049d    Inode:530606      硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/  python)   Gid:( 1000/  python)
最近访问:2017-10-06 20:03:53.633110672 +0800
最近更改:2017-10-06 20:03:46.932823916 +0800
最近改动:2017-10-06 20:03:46.932823916 +0800

6. 文件权限更改

比如我们希望更改hello.py的权限为:

user --读写和执行--rwx:读,写和执行权限; 对应于7
group -- 读写--rw-:读写权限; 对应于6
everyone --读--r--:只读权限; 对应于4

对应的八进制码为 0764

命令行: chmod 0764 hello.py

7. 复制文件  cp

cp file1  file2 : 将file1拷贝成file2

8. 文件拓展名概述
不依赖文件拓展来确定文件类型,基于unix的操作系统使用的媒体类型,成为MIME类型。MIME类型application/pdf表示文件是a pdf,MIME类型image/png表示文件是png图像。MIME类型字符串的第一部分是类型,例如applicationimage,第二部分是用于子类型,例如pdfpng
每种文件都有MIME类型,这些类型存储在metadata里。 这样,linux可以找出一个文件的类型,然后正确的打开它
我们可以去除或者重命名文件的后缀。但是更多的时间,我们面临的是没有后缀的文件。
更改文件名: 
mv hello  hi.py 
mv  test.txt test1.txt 

9. 删除文件 rm

rm hello.py 

3. 浏览文件系统


使用命令行往往比使用GUI或者使用python程序浏览文件系统更快,



4. 使用命令行操作程序


1. 设置变量
在这些shell教程中,我们已经通过命令行与计算机进行了交互。我们键入命令,执行,我们看到结果。这些交互发生在shell中,这是访问和控制计算机的一种方式。命令行shell具有用于键入命令和查看结果的文本界面,而不是图形外壳,这使我们可以使用鼠标点击图标。
虽然有很多UNIX shell,但Bash是最受欢迎的。Bash是大多数Linux和OS X计算机上的默认shell。
Bash本质上是一个让我们运行其他程序的程序。它通过实现命令语言来实现。该语言指定如何键入和构造我们要执行的命令。
命令语言是一种特殊的编程语言,通过它可以控制应用程序和整个系统。就像Python和其他编程语言一样,我们可以使用Bash来创建脚本,设置变量等等。因为它是一种语言,所以Bash比图形外壳强大得多。
例如,我们可以通过为它们分配值来设置命令行上的变量。在命令行环境中,变量完全由大写字母,数字和下划线组成。我们可以将任何数据类型分配给变量。以下是我们如何在命令行上设置变量的几个示例:
OS=linux
OPERATING_SYSTEM="linux"
这两个变量的上方,OS并且OPERATING_SYSTEM,实际上将具有相同值结束。这是因为在Bash中使用字符串时引号是可选的,除非字符串包含空格。Bash对空格敏感,所以如果我们不用引号包围它们,那么拥有它们的字符串将无法正常工作。
此作业将无法正常工作,例如:
ANIMAL=Sharkwith a laserbeam on itshead
这个可以工作:
ANIMAL="Shark with a laser beam on its head"
避免在等号周围添加空格也很重要。例如,此分配将失败:
ANIMAL = "Shark with a laser beam on its head"

2.  访问变量
在Bash中,我们可以在设置之后再次访问变量的值,就像我们可以使用Python等其他编程语言一样。有一个主要的区别,但是当我们尝试检索其值时,我们需要在变量名的开头添加一个美元符号。
例如,如果我们创建一个名为FOODvalue 的变量Shrimp gumbo,我们需要在$FOOD以后再次访问该值时使用。这是因为FOOD在命令提示符下输入将尝试调用该命令FOOD它会返回一个错误,因为有一个名为没有可执行的命令FOODPATH
Python变量和Bash变量之间的另一个区别是,当我们$FOOD在命令提示符下键入时,它将解析为变量的值Shrimp gumbo默认情况下,Bash将尝试将此值转换为命名的命令Shrimp,然后调用它。因为没有命名的可执行ShrimpPATH,这将产生一个错误。
如果我们想看到名为的变量的值FOOD,我们需要键入echo $FOOD这将成为echo "Shrimp gumbo",将打印Shrimp gumbostdout

3. 创建环境变量
到目前为止,我们一直在创建shell变量。我们只能在Bash shell中访问这些变量。
另一种类型的变量是一个环境变量我们可以通过我们从shell运行的任何程序访问这些。
我们可以使用该export命令创建环境变量例如,export FOOD="Chicken and waffles"将创建一个调用的环境变量FOOD

4. 访问环境变量
我们可以从Bash运行许多程序,包括Python。要从Bash shell运行Python解释器,我们python在命令提示符下键入。
一旦我们进入命令提示符,我们可以使用如下命令访问环境变量:
importos
printOS.ENVIRON[ “FOOD” ])
首先,我们导入了os内置到Python标准库中的包。它包含许多有用的操作系统的功能。
然后,我们使用os.environ了包含环境变量的所有值的字典。我们可以通过将其指定为键来访问任何环境变量,就像我们可以使用任何Python字典一样。
这应该让您感受到环境变量的力量 - 我们可以使用它们在Python脚本和其他地方设置配置。当配置是秘密的(如访问密钥)或快速更改时,此功能非常有用

5. Call程序
在最后一个屏幕上,我们通过键入pythonshell 来访问Python 我们可以这样运行许多程序。程序没有什么特别的 - 它只是系统上某处的文件。

我们可以通过键入其完整路径访问任何程序。Python的完整路径本身就是一个程序/usr/bin/python

6. PATH变量
在最后一个屏幕上,我们键入/usr/bin/python访问Python解释器。如果Python解释器位于该位置,那么我们怎么也可以通过键入来访问它python
我们可以这样做,因为PATH环境变量,它被配置为指向几个文件夹(创建一个“快捷方式”)。我们可以通过键入程序的名称来运行任何一个这些文件夹中的任何程序。由于/usr/bin是在文件夹之一PATH,并python是该文件夹中,我们可以仅通过打字访问Python解释器python,而不是完整的路径。

7. Flag
我们一直在运行的一些程序有参数,有些则没有。当我们键入时echo $FOOD,我们将$FOOD变量的值作为位置参数传递给echo程序。这与Python中的函数类似,它具有位置和关键字参数。程序可以有任意数量的位置参数,包括零。 python是不需要任何位置参数的程序的示例。
复制命令(cp)是具有两个位置参数的命令的示例 - 我们需要传入文件名以及要复制的路径。
程序也可以有可选的标志。这些都是Python中的关键字参数,它修改程序行为。例如,如果我们将-l标志(对于“长模式”)传递给ls(“list”命令),则该命令将以长模式列出目录中的文件,这意味着它将显示更多关于它们的信息。

8. flag组合
我们经常想要指定多个标志。大多数标志都有简短的单字符名称,以及更长版本的这些名称。请参阅ls手册页,仔细看看这一点。
例如,ls -a并且ls --all做同样的事情 - 他们将列出目录中的所有文件,而不是隐藏以点(.开头的文件命令是等效的。
当我们有多个具有短字符名称的标记时,我们可以链接在一起以节省时间。 ls -la将列出所有长格式的文件; 相当于ls -a -l的顺序la无关紧要。虽然有经验的程序员一直这样做,但首先解析可能会有点混乱

9.长flag
我们可以用两个破折号指定更长的标志。一个这么长的标志ls--ignore使用ls --ignore=test.txt不会包含test.txt在输出中命名的任何文件ls






1. 命令行基础


1. pwd 命令行
大多数人通过图形用户界面(GUI)与计算机进行交互,视觉界面如下所示:
这是Mac计算机上的桌面屏幕截图。每个程序都有一个图标,我们可以点击一个来启动相应的程序。在GUI出现之前,与计算机交互的最常用方式是通过命令行界面,我们也将其称为shell终端(我们将在此任务中互换使用这些术语)。命令行界面让我们通过键入命令在文件夹之间切换和启动程序。命令行界面通常比用于编程任务的GUI更快,更强大。
pwd --打印当前文件夹的名臣
当我们pwd在最后一个屏幕上键入时,终端打印出我们所在的文件夹的名称。终端被设计为在目录之间导航和切换。您可能已经使用GUI浏览目录,例如Windows中的资源管理器OS X中的Finder。除了键入命令而不是单击文件夹名称之外,终端可以让我们执行相同的操作。一旦了解终端,您将看到使用它来浏览目录比使用GUI要快得多。
计算机将文件存储在目录或文件夹中。每个目录可以有子目录或文件。现在,我们在dq文件夹中,它是文件夹的子home文件夹。这意味着我们目前的文件夹路径是/home/dq home是存在于文件系统根目录下的文件夹; 认为它是“主”或“原”文件夹。我们通过用正斜杠分隔两个文件夹名称来表示它dqhome文件夹中home/dq我们指出home是在文件系统的根源,带有主要的斜杠 - /home
根目录,或者/是一个特殊的目录,它将导航到文件系统的根目录。我们可以将我们的文件系统看成如下的树:
/
| __home
|
| __dq
home是文件系统根目录下的文件夹,是文件夹中的dq一个文件home夹。
我们可以使用该cd命令切换目录。例如,我们可以键入cd /切换到根目录。
cd  / -- 切换到根目录 

2. 绝对路径和相对路径
当我们键入正斜杠(/)时,终端切换到根目录。任何以路径开始/路径都是与文件系统根部相关绝对路径无论我们在哪个文件夹中,打字cd /home/dq将切换到dq文件夹内的home文件夹中,该文件夹位于文件系统的根目录。
另一方面,相对路径是相对于我们目前的目录。这些不是以正斜杠开始。home例如,如果我们在文件夹中,打字cd dq会将我们移动到/home/dq如果我们在/文件系统的根()中,键入cd dq会导致错误,因为shell认为我们要求dq当前目录(不存在)中的子home文件夹,而不是文件夹中的子文件夹。
cd qd 返回home/dq
whoami --输入whoami时候,会返回用户名称。
cd / --返回根不睦
cd ~ --返回home目录
 mkdir --创建一个文件夹
mkdir -v test --- 创建一个文件夹,并显示详细的信息
mkdir --help -- 获取mkdir的帮助文档
ls -l ---返回格式化好的文件及文件夹目录 
rmdir -删除文件夹, 注意只能删除空的文件夹,如果要删除含有文件和文件夹的文件夹,使用如下:
rm demo -r


2. 命令行操作文件


1. touch 创建文件
touch demo.py

2. 使用echo标准流
echo "hello world" 

3. 重新定向标准流
echo "hello world" >hello.py

4. 编辑文件
nano test.txt   ctrl +x退出

5. 文件权限简介

Unix中,有三种权限:owner , group, everyone
  • read - 能够查看文件中的内容(如果在文件夹中定义了查看文件夹中的文件的功能)
  • write - 修改文件的能力(如果文件夹,删除,修改和重命名文件夹中的文件的能力)
  • execute - 运行文件的能力(一些文件是可执行的,需要此权限才能运行)
可以使用ls -l查看文件及文件夹的权限,比如:
-rw-r--r-- 1 python python 48 10月  6 20:04 hello.py
将此权限行分割:
-          rw-               r--                           r--
忽略     user              Group                     Everyone
r ----读取的权限
w----写入的权限
x -----执行的权限
user 由于是“rw-",所以user有读写的权限,但是没有执行的权限,因为没有X
Group "r--" 只有读取的权限,没有写入和执行的权限
-rw-r--r--

符号法表示权限的方法的缺点是,如果我们要更改权限,我们需要很长时间才能输入更改。我们可以使用更快的方法。0760
八进制表示法允许我们使用4数字代替所有范围的权限,而不是以10符号符号表示字符。8三个权限可能的组合rwx我们可以将每个组合或范围表达为八进制(基数8)计数系统中的单个数字
  • ---:没有权限; 对应于0
  • --x:只执行许可; 对应于1
  • -w-:只写权限; 对应于2
  • -wx:写和执行权限; 对应于3
  • r--:只读权限; 对应于4
  • r-x:读取和执行权限; 对应于5
  • rw-:读写权限; 对应于6
  • rwx:读,写和执行权限; 对应于7
系统将权限字符串-rw-r--r--转换0644
可以使用stat 命令提取文件的八进制权限:
  大小:0             块:0          IO 块:4096   普通空文件
设备:801h/2049d    Inode:530606      硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/  python)   Gid:( 1000/  python)
最近访问:2017-10-06 20:03:53.633110672 +0800
最近更改:2017-10-06 20:03:46.932823916 +0800
最近改动:2017-10-06 20:03:46.932823916 +0800

6. 文件权限更改

比如我们希望更改hello.py的权限为:

user --读写和执行--rwx:读,写和执行权限; 对应于7
group -- 读写--rw-:读写权限; 对应于6
everyone --读--r--:只读权限; 对应于4

对应的八进制码为 0764

命令行: chmod 0764 hello.py

7. 复制文件  cp

cp file1  file2 : 将file1拷贝成file2

8. 文件拓展名概述
不依赖文件拓展来确定文件类型,基于unix的操作系统使用的媒体类型,成为MIME类型。MIME类型application/pdf表示文件是a pdf,MIME类型image/png表示文件是png图像。MIME类型字符串的第一部分是类型,例如applicationimage,第二部分是用于子类型,例如pdfpng
每种文件都有MIME类型,这些类型存储在metadata里。 这样,linux可以找出一个文件的类型,然后正确的打开它
我们可以去除或者重命名文件的后缀。但是更多的时间,我们面临的是没有后缀的文件。
更改文件名: 
mv hello  hi.py 
mv  test.txt test1.txt 

9. 删除文件 rm

rm hello.py 

3. 浏览文件系统


使用命令行往往比使用GUI或者使用python程序浏览文件系统更快,



4. 使用命令行操作程序


1. 设置变量
在这些shell教程中,我们已经通过命令行与计算机进行了交互。我们键入命令,执行,我们看到结果。这些交互发生在shell中,这是访问和控制计算机的一种方式。命令行shell具有用于键入命令和查看结果的文本界面,而不是图形外壳,这使我们可以使用鼠标点击图标。
虽然有很多UNIX shell,但Bash是最受欢迎的。Bash是大多数Linux和OS X计算机上的默认shell。
Bash本质上是一个让我们运行其他程序的程序。它通过实现命令语言来实现。该语言指定如何键入和构造我们要执行的命令。
命令语言是一种特殊的编程语言,通过它可以控制应用程序和整个系统。就像Python和其他编程语言一样,我们可以使用Bash来创建脚本,设置变量等等。因为它是一种语言,所以Bash比图形外壳强大得多。
例如,我们可以通过为它们分配值来设置命令行上的变量。在命令行环境中,变量完全由大写字母,数字和下划线组成。我们可以将任何数据类型分配给变量。以下是我们如何在命令行上设置变量的几个示例:
OS=linux
OPERATING_SYSTEM="linux"
这两个变量的上方,OS并且OPERATING_SYSTEM,实际上将具有相同值结束。这是因为在Bash中使用字符串时引号是可选的,除非字符串包含空格。Bash对空格敏感,所以如果我们不用引号包围它们,那么拥有它们的字符串将无法正常工作。
此作业将无法正常工作,例如:
ANIMAL=Sharkwith a laserbeam on itshead
这个可以工作:
ANIMAL="Shark with a laser beam on its head"
避免在等号周围添加空格也很重要。例如,此分配将失败:
ANIMAL = "Shark with a laser beam on its head"

2.  访问变量
在Bash中,我们可以在设置之后再次访问变量的值,就像我们可以使用Python等其他编程语言一样。有一个主要的区别,但是当我们尝试检索其值时,我们需要在变量名的开头添加一个美元符号。
例如,如果我们创建一个名为FOODvalue 的变量Shrimp gumbo,我们需要在$FOOD以后再次访问该值时使用。这是因为FOOD在命令提示符下输入将尝试调用该命令FOOD它会返回一个错误,因为有一个名为没有可执行的命令FOODPATH
Python变量和Bash变量之间的另一个区别是,当我们$FOOD在命令提示符下键入时,它将解析为变量的值Shrimp gumbo默认情况下,Bash将尝试将此值转换为命名的命令Shrimp,然后调用它。因为没有命名的可执行ShrimpPATH,这将产生一个错误。
如果我们想看到名为的变量的值FOOD,我们需要键入echo $FOOD这将成为echo "Shrimp gumbo",将打印Shrimp gumbostdout

3. 创建环境变量
到目前为止,我们一直在创建shell变量。我们只能在Bash shell中访问这些变量。
另一种类型的变量是一个环境变量我们可以通过我们从shell运行的任何程序访问这些。
我们可以使用该export命令创建环境变量例如,export FOOD="Chicken and waffles"将创建一个调用的环境变量FOOD

4. 访问环境变量
我们可以从Bash运行许多程序,包括Python。要从Bash shell运行Python解释器,我们python在命令提示符下键入。
一旦我们进入命令提示符,我们可以使用如下命令访问环境变量:
importos
printOS.ENVIRON[ “FOOD” ])
首先,我们导入了os内置到Python标准库中的包。它包含许多有用的操作系统的功能。
然后,我们使用os.environ了包含环境变量的所有值的字典。我们可以通过将其指定为键来访问任何环境变量,就像我们可以使用任何Python字典一样。
这应该让您感受到环境变量的力量 - 我们可以使用它们在Python脚本和其他地方设置配置。当配置是秘密的(如访问密钥)或快速更改时,此功能非常有用

5. Call程序
在最后一个屏幕上,我们通过键入pythonshell 来访问Python 我们可以这样运行许多程序。程序没有什么特别的 - 它只是系统上某处的文件。

我们可以通过键入其完整路径访问任何程序。Python的完整路径本身就是一个程序/usr/bin/python

6. PATH变量
在最后一个屏幕上,我们键入/usr/bin/python访问Python解释器。如果Python解释器位于该位置,那么我们怎么也可以通过键入来访问它python
我们可以这样做,因为PATH环境变量,它被配置为指向几个文件夹(创建一个“快捷方式”)。我们可以通过键入程序的名称来运行任何一个这些文件夹中的任何程序。由于/usr/bin是在文件夹之一PATH,并python是该文件夹中,我们可以仅通过打字访问Python解释器python,而不是完整的路径。

7. Flag
我们一直在运行的一些程序有参数,有些则没有。当我们键入时echo $FOOD,我们将$FOOD变量的值作为位置参数传递给echo程序。这与Python中的函数类似,它具有位置和关键字参数。程序可以有任意数量的位置参数,包括零。 python是不需要任何位置参数的程序的示例。
复制命令(cp)是具有两个位置参数的命令的示例 - 我们需要传入文件名以及要复制的路径。
程序也可以有可选的标志。这些都是Python中的关键字参数,它修改程序行为。例如,如果我们将-l标志(对于“长模式”)传递给ls(“list”命令),则该命令将以长模式列出目录中的文件,这意味着它将显示更多关于它们的信息。

8. flag组合
我们经常想要指定多个标志。大多数标志都有简短的单字符名称,以及更长版本的这些名称。请参阅ls手册页,仔细看看这一点。
例如,ls -a并且ls --all做同样的事情 - 他们将列出目录中的所有文件,而不是隐藏以点(.开头的文件命令是等效的。
当我们有多个具有短字符名称的标记时,我们可以链接在一起以节省时间。 ls -la将列出所有长格式的文件; 相当于ls -a -l的顺序la无关紧要。虽然有经验的程序员一直这样做,但首先解析可能会有点混乱

9.长flag
我们可以用两个破折号指定更长的标志。一个这么长的标志ls--ignore使用ls --ignore=test.txt不会包含test.txt在输出中命名的任何文件ls






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:4486次
    • 积分:311
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条