当用 python 编写文件路径时,我看到了几种编写语法的变体,我很好奇是否只有一种首选方法:示例是:
myFile= r"C:\My Documents\test\hello.txt"
myFile = "C:\\My Documents\\test\\hello.txt"
myFile = "C:/My Documents/test/hello.txt"
Run Code Online (Sandbox Code Playgroud)
如果有人可以提供一些指导,我们将不胜感激。哦,仅供参考,我编写Python的技能水平是新手。
我现在正在处理一个批处理文件。
它需要调用 VBS 和 REG,因此我使用 %-dp0 变量来获取文件夹路径。然而,它似乎给了我相当于 system32 路径。
这里的问题是什么?是否有类似的问题?
这是我的代码:
cd %-dp0
cscript.exe VBS.vbs
cscript.exe VBS2.vbs
goto :eof
Run Code Online (Sandbox Code Playgroud)
和:
cd %-dp0
regedit.exe Regedit.reg
goto :eof
Run Code Online (Sandbox Code Playgroud)
它返回类似这样的内容:
找不到 C:\WINDOWS\system32\VBS.vbs
我正在为文件列表创建输出文件。在例程结束时,我想获取输出文件名的列表,我可以使用下面的 for 块来实现该列表。有没有一种干净的方法可以使用列表理解来做这样的事情,或者现在不是理解的好时机?
import os
names = []
for file in f_list:
base, ext = os.path.splitext(file)
names.append(f"{base}_env{ext}")
Run Code Online (Sandbox Code Playgroud)
下面的代码有效,但如果我无法摆脱 os.path.splitext 的重复调用,我对此并不感到兴奋。
[f"{os.path.splitext(file)[0]}_env{os.path.splitext(file)[1]}" for file in list]
我是python尝试使用python打开文件的新手:
phys = "C:\\parsework\\glckpysdata.txt"
print phys
d = open(phys)
Run Code Online (Sandbox Code Playgroud)
当我跑步时,我得到:
C:\parsework\glckpysdata.txt
Traceback (most recent call last):
File "C:\py\boxtest2.py", line 28, in <module>
d = open(phys)
IOError: [Errno 2] No such file or directory: 'C:\\parsework\\glckpysdata.txt'
Run Code Online (Sandbox Code Playgroud)
我觉得我已经尝试了所有东西(phys = r"C:\ parsework\glckpysdata.txt",直接进入带双引号和单引号/反斜杠等的open命令......)似乎没有什么能阻止它读取路径带有双反斜杠.关于这个最令人沮丧的事情我在同一个脚本中有完全相同的语法,它在那里工作得很好:
thisguy = "C:\\parsework\\glckout\\"
thisguy += nam
g = open(thisguy)
Run Code Online (Sandbox Code Playgroud)
是在相同的脚本,工作正常.有人能告诉我发生了什么事吗?
你好,我需要提供我的应用程序原始文件夹中的 pdf 文件的路径,即(R.raw.input.pdf)
请查看我的主要 java 文件,并请帮我提供原始文件夹的路径
public class MainBrowserActivity extends Activity {
private Button btnPDF;
public Scanner scan;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnPDF = (Button) findViewById(R.id.btnOpenPDF);
btnPDF.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Resources res = getResources();
scan = new Scanner(res.openRawResource(R.raw.input));
String uri = "android.resource://" + getPackageName() + "/"+R.raw.input;
System.out.println("FIle Path is" + uri);
final Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(uri), "pdf/*");
intent.setClass(MainBrowserActivity.this,PdfViewerActivity.class);
startActivity(intent);
}
});
}
}
Run Code Online (Sandbox Code Playgroud) 我在我的路径中将以下脚本保存为"lspkg":
#!/bin/bash
args=("$@")
for item in ${args[@]}; do
echo "$item"
done
Run Code Online (Sandbox Code Playgroud)
当我运行时lspkg /absolute/path/to/file,它按预期工作,打印路径.但是,以下行为给我带来了很多麻烦:
转义路径中的空格并没有真正逃离空间:
$ lspkg /absolute/path/to/file\ with\ spaces
/absolute/path/to/file\
with\
spaces
Run Code Online (Sandbox Code Playgroud)
将路径放在引号中不会使bash将其视为单个字符串:
$ lspkg "/absolute/path/to/file with spaces"
"/absolute/path/to/file
with
spaces"
Run Code Online (Sandbox Code Playgroud)
为什么会这样,这个问题怎么解决?
如何获得2条路径之间的差异?
我们使用$ src变量作为基本路径定义,我们将修改后的列表添加到FilesList.txt中.
如
$src = "C:\\Users\\Desktop\\Perl\\Index"
$_ = "C:\Users\Desktop\Perl\Index\CC\Login.jsp";
Run Code Online (Sandbox Code Playgroud)
现在,我们如何获得"CC\Login.jsp"值,我正在使用下面的代码,但我们没有得到预期的输出.请帮忙.
$src="C:\\Users\\Desktop\\Perl\\Index";
open IN, "FilesList.txt";
while(<IN>)
{
chomp($_);
$final=$_;
$final =~ s/\$src//;
print "\nSubvalue is ---$final \n";
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试从导航栏链接我的登录页面.这就是我对navbar的看法:
<div class="navbar-container">
<ul id="slide-out" class="side-nav center-align">
<li>
<div class="user-view center-align">
<a><i class="medium material-icons close-button">close</i></a>
</div>
<li><a routerLink="../login">Login</a></li>
</ul>
<a href="#" data-activates="slide-out" class="button-collapse"><i class="small material-icons {{updateMe()}}">filter_list</i></a>
</div>
Run Code Online (Sandbox Code Playgroud)
这是我的文件结构:
但是,它只是没有链接到组件.我得到的错误是:
core.js:1542 ERROR错误:未捕获(在承诺中):错误:无法匹配任何路由.网址细分:'登录'
我使用相对路径错了吗?我怎样才能解决这个问题?谢谢!
在我当前的项目中,我想动态设置connectionString.我"|DataDirectory|"从默认设置中获取带有占位符()的字符串,然后我想用实际路径替换该占位符.
我的代码:
connectionString = Properties.Settings.Default.KDatabaseConnectionString;
connectionString.Replace(@"|DataDirectory|", Application.StartupPath);
Run Code Online (Sandbox Code Playgroud)
我不能让它工作,它什么都不做.当我在dubug模式下运行代码时,我可以看到连接字符串包含" |DataDirectory|",但它不会替换它.
我在这里看到很多关于string.replace()不起作用的问题,但没有关于我的问题.所以任何人都有想法?
编辑:好的,谢谢.这样一个不好的新手错误.
我有一个应该播放音乐文件的子.我可以轻松找到MyDocuments.我甚至可以使用Path.Combine来连接字符串的其余部分.
完整路径应如下所示:
......文档\ JUKEBOX \迈克尔·杰克逊\ 01.wav
但我得到的是双斜线而不是单斜线
private static void playChoice(string band, int choice)
{
var myDocs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
string filename = "0" + choice;
string[] paths = { myDocs, "JukeBox", band, filename, ".wav" };
var fullPath = Path.Combine(@paths);
var player = new System.Media.SoundPlayer(fullPath);
player.Play();
}
Run Code Online (Sandbox Code Playgroud)
A)如何删除双斜杠,因为我的逐字说明符不起作用B)代码看起来很糟糕 - 是否有更好的方法 - 或者是否有人链接到有用的文献
configFilePath = @"C:\ Users \"+ userName + @"\ abc\abc.exe.config";
if(File.Exists(configFilePath))
{
StreamReader fileReader = new StreamReader(configFilePath);
}
上面的行抛出"找不到路径的一部分"异常.在特定计算机中发生此错误.在所有其他机器中它工作正常.即使在那台机器中,相同的代码也可以使用.机器没有变化.我已经阅读了讨论过这个问题的所有论坛.但无法弄清楚为什么这种情况会在单独的机器中发生,现在也是如此.有权访问文件夹和文件.
我想知道是否有一种C++方式打开文件并逐行读取输入.
我遇到了以下代码来完成任务:
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ifstream myfile;
myfile.open ("example.txt");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我鼓励不要使用任何C函数或命令.
问题是,我的"example.txt"是一个字符串的形式,并使用str.c_str()是一个C函数,所以我想我有两种方法来解决这个问题.
有没有其他方法可以逐行读取文件中的输入?也许使用一些接受字符串作为文件路径参数的东西?有没有C++的做事方式?:)
或者,是否有另一种方法将字符串转换为const char*,这是myfile.open()函数需要的?
提前谢谢了!
编辑:我缺乏实践和研究使我认为c_str()是一个C函数,而事实并非如此.我很抱歉.既然不是我找到了答案.
filepath ×12
c# ×3
python ×3
android ×1
angular ×1
backslash ×1
bash ×1
batch-file ×1
c++ ×1
file ×1
file-io ×1
formatting ×1
html ×1
pdf ×1
perl ×1
replace ×1
routerlink ×1
streamreader ×1
whitespace ×1
windows ×1