删除 python 项目中 .pyc 文件的脚本
2007-05-09 14:17
1291 查看
python 项目一运行后会产生很多 .pyc 文件,给源代码管理带来很大的干扰,于是我做了个 js 脚本来清除这些文件。
使用方法很简单,把下列代码保存为 del_pyc.js,放到需要清理的项目的文件夹中,双击运行即可。
/// Global ----------------------------------------------------
var consoleOnly = true;
var defaultTimeout = 1;
var WSShell;
var fso;
var currentFolder;
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var CharSetDefault = -2, CharSetUnicode = -1, CharSetAscii = 0;
var AttrNormal = 0, AttrReadOnly = 1, AttrHidden = 2, AttrSystem = 4,
AttrVolume = 8, AttrDirectory = 16, AttrArchive = 32, AttrAlias = 1024,
AttrCompressed = 2048;
Init();
Main();
function Init() {
// detect command line
try {
WScript.StdOut.WriteLine(" ");
} catch (e) {
consoleOnly = false;
}
// initialize
WSShell = new ActiveXObject("WScript.Shell");
fso = new ActiveXObject("Scripting.FileSystemObject");
currentFolder = GetCurrentFolder();
}
function Main() {
var text;
text = "开始处理.";
Out(text, true);
COut("当前工作目录: /r/n" + currentFolder);
var files = FindFiles("[.]*[.]pyc");
COut("共有 " + files.length + " 个 .pyc 文件");
var deleted = 0;
for(var i=0;i<files.length;i++){
var f = fso.GetFile(files[i]);
f.Delete(true);
deleted++;
}
Out("成功删除了 " + deleted + " 个 .pyc 文件", false);
}
/// Files ------------------------------------------------------
// getcurrent folder
function GetCurrentFolder() {
return fso.GetFolder(fso.GetFile(WScript.ScriptFullName).ParentFolder);
}
/// Output ------------------------------------------------------
// output
function Out(text, useTimeout) {
if (useTimeout) {
useTimeout = defaultTimeout;
} else {
useTimeout = -1;
}
if (consoleOnly) {
WScript.StdOut.WriteLine(text);
} else {
WSShell.Popup(text, useTimeout, "删除 .pyc 文件");
}
}
// output
function COut(text, useTimeout) {
if (useTimeout) {
useTimeout = defaultTimeout;
} else {
useTimeout = -1;
}
if (consoleOnly) {
WScript.StdOut.WriteLine(text);
}
}
function ReadFile(file) {
var stream = file.OpenAsTextStream(ForReading, CharSetDefault);
text = stream.ReadAll();
stream.Close();
return text;
}
function WriteFile(file, text) {
var ro = ((file.Attributes & AttrReadOnly) != 0);
if (ro) file.Attributes -= AttrReadOnly;
var stream = file.OpenAsTextStream(ForWriting, CharSetDefault);
stream.Write(text);
stream.Close();
if (ro) file.Attributes += AttrReadOnly;
}
// determine, if filename matches given mask
function MatchesMask(file, mask) {
return new RegExp(mask).test(file);
}
// find files
function FindFiles(mask) {
return GetFiles(currentFolder, mask);
}
// get files in current folder & subfolders
function GetFiles(folder, mask) {
var result = new Array();
// do files in current folder
var files = new Enumerator(folder.Files);
for (; !files.atEnd(); files.moveNext()) {
if (MatchesMask(files.item(), mask)) {
result.push("" + files.item());
}
}
// do subfolders in current folder
var folders = new Enumerator(folder.SubFolders);
for (; !folders.atEnd(); folders.moveNext()) {
result = result.concat(GetFiles(folders.item(), mask));
}
return result;
}
使用方法很简单,把下列代码保存为 del_pyc.js,放到需要清理的项目的文件夹中,双击运行即可。
/// Global ----------------------------------------------------
var consoleOnly = true;
var defaultTimeout = 1;
var WSShell;
var fso;
var currentFolder;
var ForReading = 1, ForWriting = 2, ForAppending = 8;
var CharSetDefault = -2, CharSetUnicode = -1, CharSetAscii = 0;
var AttrNormal = 0, AttrReadOnly = 1, AttrHidden = 2, AttrSystem = 4,
AttrVolume = 8, AttrDirectory = 16, AttrArchive = 32, AttrAlias = 1024,
AttrCompressed = 2048;
Init();
Main();
function Init() {
// detect command line
try {
WScript.StdOut.WriteLine(" ");
} catch (e) {
consoleOnly = false;
}
// initialize
WSShell = new ActiveXObject("WScript.Shell");
fso = new ActiveXObject("Scripting.FileSystemObject");
currentFolder = GetCurrentFolder();
}
function Main() {
var text;
text = "开始处理.";
Out(text, true);
COut("当前工作目录: /r/n" + currentFolder);
var files = FindFiles("[.]*[.]pyc");
COut("共有 " + files.length + " 个 .pyc 文件");
var deleted = 0;
for(var i=0;i<files.length;i++){
var f = fso.GetFile(files[i]);
f.Delete(true);
deleted++;
}
Out("成功删除了 " + deleted + " 个 .pyc 文件", false);
}
/// Files ------------------------------------------------------
// getcurrent folder
function GetCurrentFolder() {
return fso.GetFolder(fso.GetFile(WScript.ScriptFullName).ParentFolder);
}
/// Output ------------------------------------------------------
// output
function Out(text, useTimeout) {
if (useTimeout) {
useTimeout = defaultTimeout;
} else {
useTimeout = -1;
}
if (consoleOnly) {
WScript.StdOut.WriteLine(text);
} else {
WSShell.Popup(text, useTimeout, "删除 .pyc 文件");
}
}
// output
function COut(text, useTimeout) {
if (useTimeout) {
useTimeout = defaultTimeout;
} else {
useTimeout = -1;
}
if (consoleOnly) {
WScript.StdOut.WriteLine(text);
}
}
function ReadFile(file) {
var stream = file.OpenAsTextStream(ForReading, CharSetDefault);
text = stream.ReadAll();
stream.Close();
return text;
}
function WriteFile(file, text) {
var ro = ((file.Attributes & AttrReadOnly) != 0);
if (ro) file.Attributes -= AttrReadOnly;
var stream = file.OpenAsTextStream(ForWriting, CharSetDefault);
stream.Write(text);
stream.Close();
if (ro) file.Attributes += AttrReadOnly;
}
// determine, if filename matches given mask
function MatchesMask(file, mask) {
return new RegExp(mask).test(file);
}
// find files
function FindFiles(mask) {
return GetFiles(currentFolder, mask);
}
// get files in current folder & subfolders
function GetFiles(folder, mask) {
var result = new Array();
// do files in current folder
var files = new Enumerator(folder.Files);
for (; !files.atEnd(); files.moveNext()) {
if (MatchesMask(files.item(), mask)) {
result.push("" + files.item());
}
}
// do subfolders in current folder
var folders = new Enumerator(folder.SubFolders);
for (; !folders.atEnd(); folders.moveNext()) {
result = result.concat(GetFiles(folders.item(), mask));
}
return result;
}
相关文章推荐
- 删除 python 项目中 .pyc 文件的脚本
- 用Python脚本自动删除VC项目目录下临时文件
- 用Python脚本自动删除VC项目目录下临时文件
- 使用Python脚本删除指定文件夹下的指定目录及其文件
- python将项目文件打包发布的脚本(保留原来的项目结构)
- python脚本删除指定路径下指定类型的文件
- [转载]python脚本删除一定时间以外的文件
- 删除指定文件的python脚本
- Python发布Django项目的pyc版脚本
- 使用python脚本批量删除阿里云oss中的mp4文件
- Python 脚本 批量删除目录下文件的特定内容
- 用Python脚本来删除指定容量以上的文件的教程
- Python脚本清理Winform项目下的临时文件及目录
- Python脚本02 —— 删除以@3x.png为后缀的文件
- (windows)python脚本:自动备份并压缩文件,同时删除过期文件
- python3.6深度学习图片集处理项目源代码(为cnn等准备图片集合,批量生成、删除、改名、旋转、调整图片大小,包括删除指定路径下所有文件)
- Python删除Delphi临时文件的小脚本
- python脚本删除n天之前的文件
- Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本)
- 用Python脚本来删除指定容量以上的文件的教程