我正在使用chdir()
C函数来允许用户更改目录.
但是,该功能无法识别'〜'.我是否需要进行任何显式转换,因此chdir
无法识别是什么意思?因为我不工作.或者我做错了什么?
我试图使用os.chdir更改python中的当前工作目录.我有以下代码:
import os
os.chdir("C:\Users\Josh\Desktop\20130216")
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,似乎更改了目录,因为它出现以下错误消息:
Traceback (most recent call last):
File "C:\Users\Josh\Desktop\LapseBot 1.0\LapseBot.py", line 3, in <module>
os.chdir("C:\Users\Josh\Desktop\20130216")
WindowsError: [Error 2] The system cannot find the file specified
'C:\\Users\\Josh\\Desktop\x8130216'
Run Code Online (Sandbox Code Playgroud)
谁能帮我?
我正在编写一个简单的脚本来将当前的工作目录更改为其他目录.以下脚本可以正常工作,直到程序终止,之后我回到我的主目录.
#!/usr/bin/python
import os
if __name__ == '__main__':
os.chdir("/home/name/projects/python")
os.system("pwd")
print 'dir changed'
Run Code Online (Sandbox Code Playgroud)
输出是:
bash:~$ python chdir.py
/home/name/projects/python
dir changed
bash:~$ pwd
/home/name
Run Code Online (Sandbox Code Playgroud)
我希望目录更改在程序退出后仍然保留.有什么想法怎么做?
编辑:我真正想要做的是:我经常使用这个目录,而不是cd <path>
每次打开终端时,我只是写./progname
,它改变了目录.
我读过的几乎每篇文章都告诉我,你不能用Java创建chdir.这个问题的公认答案说你不能用Java做到这一点.
但是,这里有一些我尝试过的东西:
geo@codebox:~$ java -version java version "1.6.0_14" Java(TM) SE Runtime Environment (build 1.6.0_14-b08) Java HotSpot(TM) Client VM (build 14.0-b16, mixed mode, sharing)
这是我正在使用的测试类:
import java.io.*;
public class Ch {
public static void main(String[] args) {
System.out.println(new File(".").getAbsolutePath());
System.setProperty("user.dir","/media");
System.out.println(new File(".").getAbsolutePath());
}
}
Run Code Online (Sandbox Code Playgroud)
geo@codebox:~$ pwd /home/geo geo@codebox:~$ java Ch /home/geo/. /media/.
请解释为什么这有效.从现在开始我可以使用它并期望它在所有平台上以相同的方式工作吗?
我正在尝试包含另一个目录中的文件,然后将chdir更改回当前/原始表单.
chdir('/some/path');
include(./file.php);
chdir();//How to I change the directory back to the original form?
Run Code Online (Sandbox Code Playgroud)
无论如何将chdir更改回file.php所在的位置?或者我必须手动完成吗?
我正在尝试将当前目录更改C:
为Y:
我尝试过:
import os
os.chdir('Y:')
Run Code Online (Sandbox Code Playgroud)
但我一直收到一个错误,说它找不到驱动器.基本上我正在寻找相当于
cd /d
Run Code Online (Sandbox Code Playgroud)
cmd中的命令.
int main(int argc, char **argv)
{
char input[150];
char change[2] = "cd";
char *directory;
while(1) {
prompt();
fgets(input, 150, stdin);
if(strncmp(change, input, 2) == 0) {
directory = strtok(input, " ");
directory = strtok(NULL, " ");
printf(directory);
chdir(directory);
perror(directory);
}
if(feof(stdin) != 0 || input == NULL) {
printf("Auf Bald!\n");
exit(3);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我开始这个并输入"cd test"时,我得到"没有这样的文件或目录".但是有一个目录"test".
在Arch Linux上运行.
在R中必须有一些我对这个source()
命令不了解的东西.我还是新手,但我不能为我的生活理解它是如何得到它的目录的!我的问题是:
我有一个包装器脚本,wrapper.R
和一个包含一些函数的源文件functions.R
.这两个都在同一个目录中.如果我source('functions.R')
在包装器脚本内部调用,当站在两个文件所在的目录中时,一切都很好.但是,我希望能够wrapper.R
从其他目录运行我的脚本,即不是这些脚本所在的目录.如果我为另一个目录运行我的包装器,它不起作用,我收到一个cannot open the file
错误.
我用Google搜索并找到了许多不同的主题,但这个问题似乎很清楚.我理解它的方式,我正在做的方式应该工作.显然,我误解了一些事情.我对该线程的阅读使我相信它source()
可以在调用文件所在的目录中工作source()
.我的阅读也让我相信我不应该使用chdir = TRUE
,因为我想保留广告的相对目录.
看来它不起作用......我有什么误解?当从其他地方调用时,如何从与我的包装器脚本相同的目录中获取文件?