相关疑难解决方法(0)

Unix路径:在任何平台上正式使用Python?

Python程序中的所有路径都可以使用".."(对于父目录)和/(用于分隔路径组件),并且仍然可以在平台上运行吗?

一方面,我从未在文档中看到过这样的说法(我可能已经错过了它),os和os.path模块确实提供了以平台无关的方式处理路径的工具(os.pardir,os.path.加入,...),这让我觉得他们在这里是有原因的.

另一方面,您可以在StackOverflow阅读 "../path/to/file"适用于所有平台......

因此,为了便于携带,是否应始终使用os.pardir,os.path.join和朋友,或者Unix路径名是否始终安全(最多可能出现字符编码问题)?或者"几乎总是"安全(即在Windows,OS X和Linux下工作)?

python portability path relative-path

10
推荐指数
2
解决办法
4839
查看次数

如何验证文件在Windows中是否有名称有效?

是否有一个Windows API函数,我可以传递一个字符串值,将返回一个值,指示文件名是否有效?

我需要验证文件名是否有效,并且我正在寻找一种简单的方法来实现它,而无需重新发明轮子.我正在直接使用C,但目标是Win32 API.

如果内置没有这样的功能,我将如何编写自己的功能?是否存在Windows用于确定文件名有效性的通用算法或模式?

c windows winapi filenames path

10
推荐指数
1
解决办法
5770
查看次数

如何获得角色的"英文名字"?

我刚刚使用这个最有用的链接:如何在Windows下检查给定字符串是否是合法/有效的文件名?

在一些验证代码中我有一些看起来像(忽略我不使用StringBuilder类并忽略形成消息的错误的事实(如果它显示,不需要多次告诉他们'冒号'不止一次在字符串中)):

string InvalidFileNameChars = new string(Path.GetInvalidFileNameChars());
Regex ContainsABadChar = new Regex("[" + Regex.Escape(InvalidFileNameChars) + "]");

MatchCollection BadChars = ContainsABadChar.Matches(txtFileName.Text);
if (BadChars.Count > 0)
{
    string Msg = "The following invalid characters were detected:\r\n\r\n";
    foreach (Match Bad in BadChars)
    {
        Msg += Bad.Value + "\r\n";
    }
    MessageBox.Show(Msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
    return;
}
Run Code Online (Sandbox Code Playgroud)

MessageBox看起来像(使用找到冒号的例子):

- 开始 -

检测到以下无效字符:

:

- 结束 -

我希望它能说:

- 开始 -

检测到以下无效字符:

冒号 - >:

- 结束 -

我喜欢英文名字.不是杀手,但很奇怪是否有一些功能(Char类不存在,但可能存在于我没想到的其他类中):

Char.GetEnglishName( ':');

.net c# character char

7
推荐指数
2
解决办法
2567
查看次数

在 C# 中验证文件名

可能的重复:
如何在 Windows 下检查给定的字符串是否是合法(允许)的文件名?

我是 stackoverflow 的新手。我知道这是一个愚蠢的问题,但我被困在其中。我想验证一个文件名,以便它只接受合法路径。我试过下面的代码:

if (txtFileName.IndexOfAny(System.IO.Path.GetInvalidFileNameChars()) != -1) 
{   
   MessageBox.Show("The filename is invalid");   
   return; 
} 
Run Code Online (Sandbox Code Playgroud)

但是,它起作用了,我对它是否会完全起作用感到有些困惑,所以我也想知道其他答案。我认为我们也可以使用正则表达式验证文件名。任何帮助都会很棒。

c#

7
推荐指数
1
解决办法
1万
查看次数

检查文件名是有效的Windows名称

我想检查我的字符串是否是有效的Windows文件路径.我在四处寻找,似乎没有可靠的方法来做到这一点.我还检查了boost文件系统库,并且没有明显的功能来执行此检查,可能类似于is_valid_windows_name

c++ windows filesystems file

6
推荐指数
1
解决办法
7628
查看次数

为什么File.Exists("c:\ filename.txt /")返回true?

对于文件C:\filename.txt,

File.Exists(@"c:\filename.txt/"); 
Run Code Online (Sandbox Code Playgroud)

回报true.但是当我们尝试使用该文件名打开时,它会失败.

由于尾随/,文件名很糟糕.但是,我们如何测试以确定文件是否有效,因为这告诉我它不仅可以,而且文件存在.

更新:在标准命令行测试应用程序中,结果符合预期(false).但在我的 自定义uri处理程序中,File.Exists()返回true.这真的很奇怪.

.net c# file-io

6
推荐指数
1
解决办法
741
查看次数

检查文件名是否有效

在所有平台(包括Android,iOS等移动平台)上检查文件名是否在Python中有效的最保守的方法是什么?

防爆.

this_is_valid_name.jpg - >有效

**adad.jpg - >无效

a/ad - >无效

python

6
推荐指数
1
解决办法
1万
查看次数

Windows 文件名 - 如何检查文件名是否有效?

我想要一个函数,可能在Path Functions中,它可以检查文件名是否有效。有效是指字符串中存在的字符是否全部有效(例如,?没有等)。>但遗憾的是,没有任何功能。浏览网络,我发现很少的技术,没有一个是我喜欢的,也没有找到可靠的。

  • 使用正则表达式检查文件名的内容。
  • 创建文件名,可能位于%TEMP%系统路径中。如果创建失败,则文件名(可能)无效。否则,它是有效的(因此,删除该文件)。
  • 编写一个函数,检查文件名中是否存在无效字符(例如?:*>

函数的扩展形式是检查所有无效名称(例如AUXCON),但这不是问题(至少目前如此)。

是否有任何我可能错过的已记录/未记录的函数,它可以可靠地检查文件名(而不是路径名)是否有效。

c c++ windows winapi filenames

6
推荐指数
1
解决办法
5433
查看次数

SetDllDirectory失败并带有一些unicode符号

我正在使用SetDllDirectory(实际上是SetDllDirectoryW)来从特定目录加载一些延迟加载的库.
它就像

if (SetDllDirectory(directory.c_str()) == 0)
{
    ERROR_MSG("Failed to set the current dll directory [%d]\n", GetLastError());
}
Run Code Online (Sandbox Code Playgroud)

所以一切正常,大部分时间"f:/source/trunk 11"都很好,等等.
但是当它被调用时"f:/source/trunk Gest hieß es !?;%()_@#$^&",我ERROR_INVALID_PARAMETER从GetLastError 得到.我能够创建一个具有这样名称的目录,我可以使用它.
但有什么特别的SetDllDirectory"Gest hieß es !?;%()_@#$^&"?我该如何解决?

c++ unicode winapi

4
推荐指数
1
解决办法
294
查看次数

Windows路径中多个反斜杠的已记录行为

显然,Windows(或Windows的至少一部分)会忽略路径中的多个反斜杠,并将其视为单个反斜杠。例如,从命令提示符处或“运行”窗口中执行以下任何命令都会打开记事本:

C:\Windows\System32\Notepad.exe
C:\Windows\System32\\Notepad.exe
C:\Windows\System32\\\Notepad.exe
C:\Windows\System32\\\\Notepad.exe
C:\\Windows\\System32\\Notepad.exe
C:\\\Windows\\\System32\\\Notepad.exe
Run Code Online (Sandbox Code Playgroud)

这甚至可以与在命令行上传递的参数一起使用:

notepad "C:\Users\username\Desktop\\\\myfile.txt"
Run Code Online (Sandbox Code Playgroud)

此行为记录在任何地方吗?我试了搜查,只发现这个 SO疑问,甚至提到的行为。

注意:我不是在问UNC路径(\\服务器名),\\?\前缀或\\“双引号转义符。

注意:在使用批处理文件时,我偶然发现了这种现象。批处理文件中的一行看起来像这样:

"%SOME_PATH%\myapp.exe"
Run Code Online (Sandbox Code Playgroud)

变量展开后,命令如下所示:

"C:\Program Files\Vendor\MyApp\\myapp.exe"
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,该批处理文件按预期执行,并且未因某种“找不到路径”错误而失败。

windows command-line path batch-file

2
推荐指数
1
解决办法
2524
查看次数

文件名检查无效

我有一个string存储文件名并用于SaveFileDialog.在将文件名分配给FileName属性之前,我需要确保文件名有效(例如,不包含斜杠)SaveFileDialog.我的问题是:在分配文件名之前,是否有快速确保文件名有效的方法?

例:

string fileName = fileNameTextBox.Text;
//Some code here to check validity of fileName
if(fileNameIsValid)
{
  saveFileDialog.FileName = fileName;
}
Run Code Online (Sandbox Code Playgroud)

c#

0
推荐指数
1
解决办法
1100
查看次数