标签: stat

在mac上修改/创建/访问时间不一致

我无法os.utime在mac上正确设置修改时间(Mac OS X 10.6.2,运行Python 2.6.1 /usr/bin/python).它与touch实用程序不一致,并且与Finder的"获取信息"窗口中显示的属性不一致.

请考虑以下命令序列.纯文本中的"已创建"和"已修改"时间是指查找程序中"获取信息"窗口中显示的属性.提醒一下,os.utime需要参数(filename, (atime, mtime)).

>>> import os
>>> open('tempfile','w').close()
Run Code Online (Sandbox Code Playgroud)

'created'和'modified'都是当前时间.

>>> os.utime('tempfile', (1000000000, 1500000000) )
Run Code Online (Sandbox Code Playgroud)

'created'是当前时间,'modified'是2017年7月13日.

>>> os.utime('tempfile', (1000000000, 1000000000) )
Run Code Online (Sandbox Code Playgroud)

"创造"和"修改"都是2001年9月8日.

>>> os.path.getmtime('tempfile')
1000000000.0
>>> os.path.getctime('tempfile')
1269021939.0
>>> os.path.getatime('tempfile')
1269021951.0
Run Code Online (Sandbox Code Playgroud)

......但是os.path.get?timeos.stat没有反映出来.

>>> os.utime('tempfile', (1500000000, 1000000000) )
Run Code Online (Sandbox Code Playgroud)

"创造"和"修改" 仍然是2001年9月8日.

>>> os.utime('tempfile', (1500000000, 1500000000) )
Run Code Online (Sandbox Code Playgroud)

'created'是2001年9月8日,'modified'是2017年7月13日.

我不确定这是Python问题还是Mac stat问题.当我退出Python shell并运行时

touch -a -t 200011221234 tempfile
Run Code Online (Sandbox Code Playgroud)

正如预期的那样,修改和创建时间都没有改变.然后我跑了

touch -m -t 200011221234 tempfile …
Run Code Online (Sandbox Code Playgroud)

python macos touch stat

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

如何使用Python设置文件的ctime?

如何设置Unix文件的ctime

(我更喜欢Python的答案.如果没有办法用标准的Python做,那么我认为C也可以.)

(注意:我知道可以使用os.utime来设置文件的atime和mtime.我对设置ctime很感兴趣.)

(注2:我希望有一个适用于任何POSIXoid Unix的答案,但如果没有,我对Darwin和Ubuntu感兴趣.)

python unix ctime stat

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

C++ stat.h不完整类型且无法定义

我对stat.h有一个非常奇怪的问题

在我的代码的顶部,我有声明:

#include <sys\types.h> 
#include <sys\stat.h> 
Run Code Online (Sandbox Code Playgroud)

和功能原型:

int FileSize(string szFileName);
Run Code Online (Sandbox Code Playgroud)

最后,函数本身定义如下:

int FileSize(string szFileName)
{
  struct stat fileStat; 
  int err = stat( szFileName.c_str(), &fileStat ); 
  if (0 != err) return 0; 
  return fileStat.st_size;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,我收到错误:

divide.cpp: In function 'int FileSize(std::string)':
divide.cpp:216: error: aggregate 'stat fileStat' has incomplete type and cannot be defined
divide.cpp:217: error: invalid use of incomplete type 'struct stat'
divide.cpp:216: error: forward declaration of 'struct stat'
Run Code Online (Sandbox Code Playgroud)

从这个线程:我怎样才能在C中获得文件的大小? 我认为这段代码应该可行,我无法弄清楚为什么它不能编译.谁能发现我做错了什么?

c++ filesize stat incomplete-type

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

Binutils stat非法选项-c

我在我的脚本中使用两次stat来查找文件文件权限,一次查找文件的大小.

 `stat -c %A "$directory/$file"`
 `stat -c %s "$directory/$file"`
Run Code Online (Sandbox Code Playgroud)

我使用的是OSX 10.7,目录和文件是我所在的当前目录和文件的变量.

macos bsd gnu stat binutils

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

使用Python的stat函数有效地获取所有者,组和其他权限

题:

如何有效地使用stat函数来获取有意义的文件权限(用户,组和其他).

细节:

我正在查询文件权限,如下所示:

statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
Run Code Online (Sandbox Code Playgroud)

这将以十进制形式返回权限.因此,如果fooBar.txt具有八进制文件权限0700,则此处permissions设置为十进制值448.我想是设置9个变量对每个权限(ownerRead,ownerWright,ownerExecute,groupRead,...)如果我要做到这一点,我会用蛮力方法如下所示:

statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
octPermissions = oct ( permissions )

ownerRead = octPermissions [1] >= 4
ownerWrite = octPermissions [1] == 2 or octPermissions [1] == 6 or octPermissions [1] == 3 or 
ownerExecute = octPermissions [1] …
Run Code Online (Sandbox Code Playgroud)

python permissions octal stat

6
推荐指数
2
解决办法
3392
查看次数

如何刷新nfs属性缓存?

我需要找到一种方法来刷新客户端的NFS属性缓存.stat()调用从属性缓存中读取ctime而不是实际值,实际值最多需要3秒才能在缓存中反映出来.在安装工作时使用'noac'选项,但从长远来看会影响性能.

我遇到了解决方案,比如在文件的同一所有者上做了一个chown,但在执行stat()之前是否有适当的方法来刷新属性缓存?这个问题只发生在Redhat Linux而不是FreeBSD上.谁能解释一下?

linux caching nfsclient nfs stat

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

在 Python 中获取文件属性(隐藏、只读、系统、存档)

刚开始学Python。如何在 Python 中获取文件属性的状态?我知道os.chmod(fullname, stat.S_IWRITE)删除只读属性,但是如何在不更改它的情况下获得状态?我需要获得"hidden", "system", "readonly", 的所有属性"archive"

python attributes operating-system chmod stat

5
推荐指数
2
解决办法
9270
查看次数

Unix readdir (3) 和 stat (2) 给出不同的 inode

我是我大学系统编程课的助教。最近,学生们正在完成一项涉及复制该程序的作业pwd

一些学生注意到了似乎不一致的地方。当他们从 readdir 条目中读取 ino 时,它会给出与统计同一目录时不同的 inode。他们中的许多人都在问为什么。目录项的索引节点不应该指向目标目录所在的索引节点吗?如果是这样,为什么 stat 给出不同的 inode?

这是一些示例代码来演示:

#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>

#define DIR_NAME "~redacted~"

int getReaddirInode(char* entName)
{
   DIR* directory;
   struct dirent* entry;
   ino_t result;
   if ((directory = opendir(".")) == NULL)
   {
      perror("opendir");
      exit(1);
   }
   while ((entry = readdir(directory)) != NULL)
   {
      if (strcmp(entName, entry->d_name) == 0)
      {
         result = entry->d_ino;
         break;
      }
   }
   if (entry == NULL)
   {
      fprintf(stderr, "No such directory: %s.\n", …
Run Code Online (Sandbox Code Playgroud)

c unix inode stat readdir

5
推荐指数
1
解决办法
714
查看次数

如何以diff命令返回的格式在perl中获取文件的最后修改时间?

我想以与 linuxdiff命令显示的格式相同的格式显示时间。

D:\>diff -dub old.cfg new.cfg
--- old.cfg       2019-05-15 15:03:14.289950700 +0530
+++ new.cfg       2019-05-14 16:07:21.119695300 +0530
Run Code Online (Sandbox Code Playgroud)

我想将文件的上次修改时间显示为2019-05-15 15:03:14.289950700 +0530.
我用过,stat但我没有得到纳秒部分。Alo,需要给定格式的时区。我也试过Time::HiRes,但是无法得到。

my $dt = strftime("%Y-%m-%d %H:%M:%S", localtime((stat($old_file))[9]));
Run Code Online (Sandbox Code Playgroud)

它返回:2019-05-15 15:03:14。你能帮我附加其他信息吗?

perl diff strftime stat

5
推荐指数
1
解决办法
765
查看次数

什么是 Unix 中的“whiteout”(S_IFWHT)?

可以使用的一种可能的文件类型stat(2)S_IFWHT,也称为 whiteout。它是什么?

c unix system-calls stat

5
推荐指数
1
解决办法
364
查看次数