我正在创建一个基本的 GUI 作为一个大学项目。它扫描用户从他们的电脑上选择的硬盘驱动器,并为他们提供有关该硬盘的信息,例如其中的文件数量等......
我的扫描功能的一部分是,对于驱动器上的每个文件,获取所述文件的大小(以字节为单位),并将其添加到运行总数中。最后,将这个数字与 Windows 总数进行比较后,我总是发现我的 Python 脚本在驱动器上找到的数据少于 Windows 所说的数据。
下面是代码...
import os
overall_space_used = 0
def Scan (drive):
global overall_space_used
for path, subdirs, files in os.walk (r"" + drive + "\\"):
for file in files:
overall_space_used = overall_space_used + os.path.getsize(os.path.join(path,file))
print (overall_space_used)
Run Code Online (Sandbox Code Playgroud)
当在我的 HDD 上执行此操作时,Python 表示总共有 23,328,445,304 字节的数据 (21.7 GB)。但是,当我在 Windows 中进入该驱动器时,它显示有 23,536,922,624 字节的数据 (21.9 GB)。为什么会有这样的差异呢?
我手动计算了它,并使用 Windows 用于从字节转换为吉比字节 ( gibibytes = bytes / 1024**3) 的相同公式,我仍然少了 0.2 GB。为什么 Python 发现的数据较少?
我使用以下代码来限制日志文件的大小(最小示例):
import logging
from logging.handlers import RotatingFileHandler
# Set up logfile and message logging.
logger = logging.getLogger("Logger")
logger.setLevel(logging.ERROR)
# Create the rotating file handler. Limit the size to 1000000Bytes ~ 1MB .
handler = RotatingFileHandler("test.log", mode='a', maxBytes=1000000, encoding=None, delay=0)
handler.setLevel(logging.ERROR)
# Create a formatter.
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# Add handler and formatter.
handler.setFormatter(formatter)
logger.addHandler(handler)
for l in range(1000):
logger.error("test" * 1000)
Run Code Online (Sandbox Code Playgroud)
但是文件大小超出了 1MB 的限制并继续记录。我不明白我做错了什么。有没有办法选择不同的参数来正确限制日志文件的大小?
我使用 ggplotly 在 R 中创建了一个地图。要创建链接,其大小需要为 524kb 或以下,但目前为 1.2Mb。有什么好的方法可以减少文件大小以便我可以导出吗?或者这完全不现实?
我正在编写一个 Powershell 脚本,旨在在一个或多个文件下载完成后关闭 Windows 计算机(笔记本电脑/PC)(为了举例说明,我们假设这里有一个大文件)。
简而言之,我们每 x 秒读取整个下载文件夹的大小,并比较之前和之后的延迟大小。如果最近一段时间没有变化,则说明下载要么完成,要么卡住,这两种情况都会导致关机。
给出以下脚本(尺寸获取器在某些时候可以是一个独立的函数,是的):
#Powershell5
#Major Minor Build Revision
# ----- ----- ----- --------
# 5 1 19041 1320
$downloadDir = "C:\Users\edi\Downloads"
while (1)
{
$s1 = Get-ChildItem -Path $downloadDir | Measure-Object -Property Length -Sum | Select-Object Sum
write-host "S1:" $s1.sum
# this 3 seconds time is just for testing purposes; in real case scenario this will most
# likely be set to 60 or 120 seconds.
Start-Sleep -s 3
$s2 = Get-ChildItem -Path $downloadDir …Run Code Online (Sandbox Code Playgroud) 我正在使用命令行编译器构建SWF mxmlc.exe.编译器将输出文件大小写为stdout的一部分.如果我连续多次运行编译器而不更改实际的源代码,我会看到文件大小一次上下跳动几个字节.
C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28443 bytes)
C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28442 bytes)
C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28440 bytes)
C:\>mxmlc.exe Gallery.as
C:\Gallery.swf (28442 bytes)
Run Code Online (Sandbox Code Playgroud)
我想不出为什么会出现这种情况.即使我每次都删除输出文件,重新生成的文件大小仍然以这种方式变化.
有什么想法吗?
我正在使用OpenCV构建原型应用程序.该应用程序目前没有做任何事,但其apk文件大小为6MB.大小是普通应用程序大小的10倍.有没有办法减少这个尺寸?
更新:我发现只要我在JNI/C++中使用Android原生相机和OpenCV接口,文件大小可能取决于您在库中使用的方法.目前我的测试应用程序使用简单的过滤器大小为700K.
可能重复:
PHP - 获取目录的大小
我在一个目录中有5个文件,它显示文件大小= 4096但是当我删除4个文件并且只剩下1个文件时,它仍然显示相同的大小.这就是我如何获得文件大小
echo filesize("user_files/".$uid."/".$rs['DirectoryName']);
Run Code Online (Sandbox Code Playgroud) 我正在做一些测试,看看我们是否可以在MongoDB上使用GridFS来存储未来应用程序的文件; 我正在使用10gen的C#驱动程序将80Mb文件"上传"到数据库中.
第一次添加很好,花了大约3秒钟,这对我的测试机器来说并不算太糟糕; 然而,未来相同文件的添加需要更长时间,最多30秒,MongoDB最终告诉我内存耗尽并崩溃.
在系统崩溃命名dbaseName.0到dbaseName.7之前,添加10个文件,大小为80Mb会导致为我的数据库创建8个文件,文件大小从文件0到5从16Mb到512Mb呈指数级增长,然后文件6和7都是512MB.
这些文件的价格低于2Gb,显然第10次添加文件需要dbase超过2Gb,这超出了我的32位测试版本的限制.
为什么存储800Mb的文件需要超过2Gb?有没有我错过的地方?
MongoDB是否经常在RAM中保存整个GridFS?如果是这样的话,磁盘有什么意义呢?如果我的生产服务器上只有32Gb的RAM,那么我只能在GridFS中存储32Gb吗?
我在MongoGridFS对象上使用了EnsureIndexes,并检查了显示为GridFS创建索引的数据库,所以Mongo不应该尝试将整个数据存储区放入RAM中吗?
MongoDB满足我们的所有需求,但我们需要它能够容纳大型文件集; 我错过了一些明显的东西吗
堆栈跟踪:
Mon Oct 15 11:57:15 [conn15] insert busyNow.fs.chunks keyUpdates:0 locks(micros) w:112892 113ms
Mon Oct 15 11:57:15 [conn15] MapViewOfFileEx for /data/db/busyNow.7 failed with errno:8 Not enough storage is available to process this command. (file size is 536608768) in MemoryMappedFile::map
Mon Oct 15 11:57:15 [conn15] busyNow.fs.chunks Fatal Assertion 16166
Mon Oct 15 11:57:17 [conn15] mongod.exe ...\src\mongo\util\assert_util.cpp(124) mongo::fassertFailed+0x75
Mon Oct 15 11:57:17 [conn15] mongod.exe ...\src\mongo\util\mmap_win.cpp(211) mongo::MemoryMappedFile::map+0x4ce
Mon Oct 15 11:57:17 [conn15] mongod.exe …Run Code Online (Sandbox Code Playgroud) 我正在尝试检查我的文件夹中是否为空(0字节)的文件.我有大约1200个文件,所以Perl将使这个任务非常容易:)
到目前为止,这是我的代码,但它似乎不起作用.(它只列出了所有文件.)任何人都可以教我做错了什么吗?谢谢!
#!/usr/bin/perl
@files = glob('*');
if ((-s @files) == 0) {
print"@files\n";
}
Run Code Online (Sandbox Code Playgroud) 有没有一种方法或参数可以使bash命令“ ls”以位显示文件大小?我知道“ ls -lh”会显示文件的大小,但以字节,千字节等为单位。或者任何其他可以用于linux的bash命令,可以这样做?