改变谷歌colab中的目录(打破python解释器)

wil*_*ade 35 google-colaboratory

所以我正在尝试使用Google协作git clone和cd进入该目录 - 但我无法进入它.我究竟做错了什么?

!rm -rf SwitchFrequencyAnalysis && git clone https://github.com/ACECentre/SwitchFrequencyAnalysis.git

!cd SwitchFrequencyAnalysis

!ls datalab/SwitchFrequencyAnalysis /

您可能希望它输出SwitchFrequencyAnalysis的目录内容 - 而不是它的根目录.我觉得我错过了一些明显的东西 - 它是否与python解释器有关?(文件在哪里?)

在这里演示.

小智 45

使用

%cd SwitchFrequencyAnalysis

更改笔记本环境的当前工作目录(而不仅仅是运行!命令的子shell).

您可以使用以下pwd命令确认它是否有效:

!pwd

关于jupyter/ipython魔法的更多信息:http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-cd

  • 为什么 cd 使用 % 而 pwd 使用 ! 作为其前缀 (6认同)
  • @cloudscomputes 正如其他评论所提到的,“!”和“%”之间存在差异,因此可以说以“!”开头的命令是全局的并且针对整个系统运行,而带有“%”的命令特定于当前环境(当前项目的主环境与虚拟环境)。因此,“cd”命令应该以“%”开头,告诉编译器我们正在更改当前临时子 shell 的目录。 (6认同)

Bob*_*ith 25

使用os.chdir.以下是一个完整的示例:https: //colab.research.google.com/notebook#fileId=1CSPBdmY0TxU038aKscL8YJ3ELgCiGGju

紧:

!mkdir abc
!echo "file" > abc/123.txt

import os
os.chdir('abc')

# Now the directory 'abc' is the current working directory.
# and will show 123.txt.
!ls
Run Code Online (Sandbox Code Playgroud)


zsf*_*hnu 20

如果要使用cd或ls函数,则在函数名称(%和!分别)使用%cd和!ls之前需要正确的标识符

.

!ls    # to find the directory you're in ,
%cd ./samplefolder  #if you wanna go into a folder (say samplefolder)
Run Code Online (Sandbox Code Playgroud)

或者如果你想离开当前文件夹

%cd ../      
Run Code Online (Sandbox Code Playgroud)

然后相应地导航到所需的文件夹/文件

  • 你能指点我找到上述用法的来源吗?另外,我正在寻找使用管道运算符`|`,因为我们在bash shell脚本中使用,这方面的任何建议?另外,使用`%`或`!`之间的区别是什么 (3认同)

Nik*_*ani 14

!pwd
import os
os.chdir('/content/drive/My Drive/Colab Notebooks/Data')
!pwd
Run Code Online (Sandbox Code Playgroud)

查看此答案以获取详细说明 /sf/answers/4314571411/

  • 还会补充一点,你必须先在 Colab 中挂载 Google Drive 并授予 Google Drive File Stream 授权。 (2认同)

小智 5

正如其他人指出的那样,该cd命令必须以百分比符号开头:

%cd SwitchFrequencyAnalysis
Run Code Online (Sandbox Code Playgroud)

%和之间的区别!

Google Colab似乎从Jupyter继承了这些语法(Jupyter从IPython继承了它们)。Jake VanderPlas 在这里解释了这种IPython行为。您可以在下面查看摘录。

如果您使用IPython的shell命令一段时间,您可能会注意到您不能使用!cd该文件系统进行导航:

In [11]: !pwd 
/home/jake/projects/myproject

In [12]: !cd ..

In [13]: !pwd 
/home/jake/projects/myproject 
Run Code Online (Sandbox Code Playgroud)

原因是笔记本中的shell命令在一个临时子shell中执行。如果您想以更持久的方式更改工作目录,可以使用%cdmagic命令:

In [14]: %cd ..
/home/jake/projects
Run Code Online (Sandbox Code Playgroud)

另一种看待这种情况的方式:您需要执行此操作,%因为更改目录与​​当前笔记本的环境有关,而与整个服务器运行时无关。

通常,!如果命令可以在单独的shell中运行,请使用该命令。%如果命令需要在特定笔记本电脑上运行,则使用此命令。

  • 您也可以只使用“cd”,而不使用 !cd 或 %cd。这是做什么的:)?谢谢! (2认同)