我有一个字符串,我想用作文件名,所以我想删除文件名中不允许使用Python的所有字符.
我宁愿比其他方面更严格,所以让我说我只想保留字母,数字和一小部分其他字符"_-.() "
.什么是最优雅的解决方案?
文件名需要在多个操作系统(Windows,Linux和Mac OS)上有效 - 它是我的库中的MP3文件,歌曲标题为文件名,并在3台机器之间共享和备份.
我正在设计一个数据库表,它将保存上传文件的文件名.Windows XP或Vista使用的NTFS文件名的最大长度是多少?
任何人都可以推荐一个安全的解决方案,从给定的根目录开始递归地用文件和目录名称中的下划线替换空格?例如:
$ tree
.
|-- a dir
| `-- file with spaces.txt
`-- b dir
|-- another file with spaces.txt
`-- yet another file with spaces.pdf
Run Code Online (Sandbox Code Playgroud)
变为:
$ tree
.
|-- a_dir
| `-- file_with_spaces.txt
`-- b_dir
|-- another_file_with_spaces.txt
`-- yet_another_file_with_spaces.pdf
Run Code Online (Sandbox Code Playgroud) String
变量包含文件名,C:\Hello\AnotherFolder\The File Name.PDF
.我如何只将文件名The File Name.PDF
作为字符串?
我打算拆分字符串,但这不是最佳解决方案.
例如,我该怎么做 Output.map
从
F:\Program Files\SSH Communications Security\SSH Secure Shell\Output.map
用PHP?
当我操作路径和文件名时,我一直处于打结状态,因为我没有使用的通用命名系统.
我需要提出一个命名标准并坚持下去,我希望与其他人保持清晰和一致,所以我开放学习规范的答案.
考虑这个玩具问题:( Windows示例,但希望答案应该是平台无关的)
您已获得文件夹的全名:C:\ users\OddThinking\Documents\My Source.您想要遍历下面的文件夹,并将所有.src编译为.obj.
在某些时候,您正在查看以下字符串.
C:\users\OddThinking\Documents\My Source\Widget\foo.src
Run Code Online (Sandbox Code Playgroud)
那么,您将使用哪些标识符名称?
A) foo
B) foo.src
C) src
D) .src
E) C:\users\OddThinking\Documents\My Source\ - i.e. the top of the tree.
F) Widget\foo.src - i.e. the path from the top of the tree to the leaf.
G) Widget - i.e. one node of the tree.
H) C:\users\OddThinking\Documents\My Source\Widget\ - i.e. the name of the folder
I) C:\users\OddThinking\Documents\My Source\Widget\foo.src
Run Code Online (Sandbox Code Playgroud)
让我给出一些答案,让你开始吧.
A)基地名称?
B)文件名?还是文件名?选择标识符名称时,差异很重要,我在这里永远不会保持一致.
C)扩展
D)扩展.等等,这就是我所说的C.我应该避免存储点,只需要在需要时插入?如果特定文件上没有点怎么办?
H)路径名称?或等等,这只是路径吗?
I)文件名.等等,这就是我所说的C. Path.等等,这就是我所说的H.也许H应该是文件夹名称.不是"文件夹"是特定于Windows的术语吗?
我有这种方法从字符串URI中获取文件名.我该怎么做才能让它更健壮?
private string GetFileName(string hrefLink)
{
string[] parts = hrefLink.Split('/');
string fileName = "";
if (parts.Length > 0)
fileName = parts[parts.Length - 1];
else
fileName = hrefLink;
return fileName;
}
Run Code Online (Sandbox Code Playgroud) 在我们的git控制的代码库中有几个文件我想重命名.具体来说,我只想更改文件的大小写,例如,这样sourceCode.java
就变成SourceCode.java
了.问题:我在Windows机器上,文件系统认为这些文件名相同.
如何让Windows和Git识别出更改并将其检入?
我在GIT中有一个令人困惑的问题.可以说,我有一个文件已dir1/A.txt
提交,git保留了提交历史记录
现在我需要(出于某些原因)将文件复制到dir2/A.txt
(不移动但复制).我知道有一个git mv
命令,但我需要dir2/A.txt
具有相同的提交历史dir1/A.txt
,并且dir1/A.txt
仍然保留在那里.
我不打算在A.txt
创建副本后进行更新,所有未来的工作都将完成dir2/A.txt
我知道这听起来令人困惑,我将补充说这种情况是基于java的模块(mavenized项目),我们需要创建一个新版本的代码,以便我们的客户能够在运行时拥有2个不同的版本,第一个最终将在对齐完成时删除版本.我们当然可以使用maven版本,我只是GIT的新手,并对git可以提供的内容感到好奇.
我需要将文件路径名传递给模块,该模块创建报告文档为pdf,html等.如何从目录名,基本文件名和fileformat字符串构建文件路径名?
在通话时该目录可能存在也可能不存在
例如
dir_name='/home/me/dev/my_reports'
base_filename='daily_report'
format = 'pdf'
Run Code Online (Sandbox Code Playgroud)
我需要创建一个字符串 '/home/me/dev/my_reports/daily_report.pdf'
手动连接片段似乎不是一个好方法.我试过os.path.join
join(dir_name,base_filename,format)
Run Code Online (Sandbox Code Playgroud)
但它给了
/home/me/dev/my_reports/daily_report/pdf
Run Code Online (Sandbox Code Playgroud)