我对Python脚本编程相当陌生,我想验证目录和子目录中的文件名。 验证应区分大小写。 我使用python 2.6.5 操作系统:WIN7和XP按标准验证文件名
我提示以下用户输入:
prompt = "year"
year = raw_input(prompt)
prompt = "number"
number = raw_input(prompt)
在这里,我想搜索/验证下面的文件和文件夹存在,其文件名是正确的。
folderstructure:
..\foobar_(number)_version1\music
文件中的子文件夹“音乐”
(year)_foobar_(number)_isnice.txt
(year)_itis(number)hot_today.txt
(year)_anything_is(number)possible.txt
(year)_something_{idont_want_to_check_this_part}_(number)_canbe_anything.txt
需要注意的是,包括下划线所有文字都是一样的,因此,应该永远是正确的,除了之间的事( ) 要么 {}。 我想输出结果到一个txt文件,该文件报告文件名是否正确。
实现这个最合乎逻辑的方法是什么? 我已经阅读了lib文档fnmatch(.fnmatchcase),RE和os(.path.isfile),并在这里查找了一些示例,但我无法弄清楚在哪里以及如何开始。
任何人都可以指向正确的方向吗?
只要我的脚本有工作基础,我会发布我的代码以供参考或帮助其他人。
[EDIT2]我的第一个非的Hello World脚本
import os
import re
#output :
file_out = "H:\\output.txt"
f_out = open(file_out, 'w')
print "-------start-script----------"
#input
prompt = "enter 4 digit year: "
year = raw_input(prompt)
prompt = "enter 2 digit number: "
number = raw_input(prompt)
print "the chosen year is %s" % (year)
print "the chosen number is %s" % (number)
f_out.write ("start log!\n")
f_out.write ("------------------------------------------\n")
f_out.write ("the chosen year is %s\n" % (year))
f_out.write ("the chosen number is %s\n" % (number))
#part i'm working on
print "end script"
f_out.write ("------------------------------------------\n")
f_out.write ("end script\n")
#close file
f_out.close()
嗨,谢谢你的回答。 但我想确保年份和号码之间的一切都是正确的。例如,在文件“(年)_foobar_(number)_isnice.txt”中,也应检查部分“_foobar_”和“_isnice.txt”。 因此,如果我有一个像“(年)_foobar_(number)_isbad.txt”的文件,它应该报告它是不正确的(因为它不符合所需的部分“_isnice.txt” 希望我解释得很对,英语不是我的主要语言。 – Ruud 2012-07-25 15:22:38
嗨,你可以发布一个使用模式字符串中的两个raw_inputs(年份,数字)的例子吗? 我搜索的例子,但无法找到或得到任何工作。我需要re.compile/re.group部分吗? – Ruud 2012-07-26 15:01:20
@Ruud,'re.compile'只是让正则表达式运行得更快。如果你为大数目(> 1000?)做了这个,那么你可以尝试使用re.compile作为模式。我会先运行它,如果它看起来很慢,你可以尝试优化。 're.group'只显示比赛的不同部分 - 在这种情况下,你只关心你的整个模式匹配。我刚刚修改我的第一个示例,使用'raw_input'来获取年份/编号。 – 2012-07-27 13:11:39