很多人遇到的问题是,当他们从 nautilus 启动 JAR 应用程序时,CWD(当前工作目录)被设置为他们的主文件夹(而不是 JAR 所在的文件夹)。这是 Nautilus 中的错误,尤其是 Linux。
如果您知道一个技巧可以更轻松地正确启动 Jar 而不是打开终端并在那里手动输入java -jar myJar.jar,请在下面发布。
谢谢
问题的简短代码示例:
File f = new File("ASimpleTextFile.txt");
System.out.println(f.getAbsolutePath());
Run Code Online (Sandbox Code Playgroud)
在 Windows 中,这会打印:[The Path To The Jar]/ASimpleTextFile.txt
但在 Linux 中,它会打印:/home/[yourName]/ASimpleTextFile.txt
这是一个非常糟糕的主意,因为我们经常使用配置文件的相对路径。这样,它们将不会被找到,因为文件指向主文件夹。
我们知道WPF OpenFileDialog不再更改应用程序的工作目录和RestoreDirectory属性"未实现".但是,在后续打开时,其初始目录默认为最后打开的文件而不是原始工作目录,因此必须将此信息存储在某处.我想知道是否可以从用户代码中获取/设置它?
我写了一个不同的函数和脚本的列表,我把它们放在工作目录的一些子文件夹中,这样我就可以将所有函数划分为参数(描述性统计,地统计,回归......)
当我输入source("function_in_subfolder")时,R告诉我没有功能.我明白这是因为函数必须保留在工作目录中.有没有办法将工作目录的子文件夹设置为函数的源(让我们说以分层方式)?
我们三个人使用相同的 R 脚本在R Studio 中开展我们的研究项目。这通过设置工作目录带来了一些问题,因为文件和数据表本地保存在每个人的 Dropbox 文件夹中。所以我们使用相同的脚本和相同的数据,但在我的例子中,工作目录的路径类似于“C:/Users/thoma/Dropbox/...”。
我可以在代码的开头通过setwd("directory")设置 wd ,但这仅适用于我。
我的问题:是否有命令询问我在哪里设置我的 wd,每个用户都可以设置自己的工作目录,例如askforwd()
每个文件夹中的数据都是同步的,因此这是每次不同用户运行代码时必须更改的唯一路径。
谢谢你的帮助!
这是我们的代码示例:
setwd("C:/Users/thoma/Dropbox/") #sets the directory
Datensatz <- read_excel("Datensatz.xlsx") #reads the synced data in the folder
我在转换 .exe 文件时遇到问题。它没有找到我的 Excel 文件。
我有以下代码
import pandas as pd
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
#Load data
data = pd.read_excel("data.xlsx")
...
Run Code Online (Sandbox Code Playgroud)
代码的第二部分(abspath,dname,os.chdir(dname)是设置.py文件位置的路径。因此,将.py文件和.xlsx文件放在一起总是让它找到它,无论如何那个地点。
然后我使用将其转换为 .exe
pyinstaller --hidden-import=pandas --onefile script.py
Run Code Online (Sandbox Code Playgroud)
为了使我的 script.py 工作,我必须将 data.xlsx 文件与 script.py 文件放在同一文件夹中。
我假设将 .exe 文件从 dir 文件夹拖到与 .xlsx 文件相同的位置将使其运行,但运行 .exe 文件会返回以下错误:
无法执行脚本脚本。目录中没有这样的文件“data.xlsx”。
无论“.exe+.xlsx”文件夹的位置如何,如何让它读取我的 Excel 文件?
为什么以下代码产生以下输出?
更新我的代码:我得到了基本相同的东西.
#ifdef _WIN32
#include <windows.h>
#include <direct.h>
#define GetCurrentDir _getcwd
#else
#include <unistd.h>
#define GetCurrentDir getcwd
#endif
//==============================MAIN=======================================
#ifdef _WIN32
int main(int argc, char **argv)
{
char *path = (char*)malloc(sizeof(char)*FILENAME_MAX);
GetCurrentDir(path, sizeof(path));
printf("path: %s\n", path);
//other stuff
}
//==============================END========================================
Run Code Online (Sandbox Code Playgroud)
输出 路径: -
我有一个像这样的bash脚本:
# gets all relevant files in the directory
cp ../update_files/* ./transfer_dir
# copy the python scripts to that directory
cp ../tools/update_tool/* ./transfer_dir
# execute the python scripts
python ./transfer_dir/merge.py
Run Code Online (Sandbox Code Playgroud)
现在的问题是,当我尝试执行python脚本时,它认为"工作目录"是.,而不是./transfer_dir,我不能提交先前复制的update_files文件
我怎么能改变呢?我不想太多地修改我的python脚本,因为它们大多与位置无关.
choose.dir函数参考页面有一个例子:
choose.dir(getwd(), "Choose a suitable folder")
Run Code Online (Sandbox Code Playgroud)
哪个应该在工作目录中启动文件夹选择窗口.但是我只在"我的电脑"中打开了文件夹选择窗口.这个功能有什么理由不按预期工作?
我是Git和VCS的新手.我有一个问题就是杀了我几天.如果Git不关心git项目中未跟踪的文件,为什么当你发出一个问题时它会在未跟踪文件下显示git repo的状态git status命令?
工作树是否必须在我克隆的git项目中?工作树是虚拟概念吗?
python ×3
r ×3
bash ×1
c ×1
executable ×1
filechooser ×1
git ×1
hierarchical ×1
java ×1
linux ×1
nautilus ×1
pyinstaller ×1
rstudio ×1
statistics ×1