Page 1 of 1

Python os.utime () Anruf fehlschlägt mit einem Berechtigungsfehler, obwohl die geänderte Datei 777 Berechtigungen hat

Posted: 29 Jul 2025, 05:49
by Anonymous
Ich habe eine Reihe von Dateien, die mit dem Befehl cp -r auf ein USB -Laufwerk gesichert wurden, ohne festzulegen, um den Zeitstempel zu erhalten. (Dummer Fehler, ich weiß). Die meisten dieser Dateien haben jedoch einen bestimmten Header, aus dem das Datum (in UTC) beim Erstellen der Datei gelesen werden kann. Ich möchte den modifizierten Zeitstempel dieser Dateien auf die lokale Version dieses Zeitstempels einstellen (der zufällig UTC-07: 00 ist).

Code: Select all

PermissionError: [Errno 1] Operation not permitted
Das einzige, was ich mir vorstellen kann, würde dazu führen, dass die geänderte Datei auf einem USB -Laufwerk befindet, das als/Media/MyName/Backup/... montiert ist, aber ich sehe nicht, warum das wichtig ist. Aber wenn ich aus einem Python -Skript ausgestattet bin, erhalte ich den Fehler. < /P>
Dies ist der Code: < /p>

Code: Select all

obs_date = str(HeaderItemsOfInterest(hdr))
utc_time = datetime.fromisoformat(obs_date)
utc_timestamp = utc_time.timestamp()
local_timestamp = utc_timestamp - tucson_offset
local_time = datetime.fromtimestamp(local_timestamp)
print(f"{p}:")
print(f"  UTC_time:{obs_date} ==>")
print(f"  MST_time:{local_time}")

os.utime(p, (int(local_timestamp), int(local_timestamp)))
< /code>
Die letzte Zeile verursacht den Fehler./media/scohen/backup/stellarmate/Pictures/Betelgeuse/Light/Betelgeuse_Light_001.fits:
UTC_time:2025-01-18T02:07:22.703 ==>
MST_time:2025-01-17 19:07:22.703000
Traceback (most recent call last):
File "/usr/lib/python3.12/idlelib/run.py", line 580, in runcode
exec(code, self.locals)
File "/home/scohen/python/fits/fitsredater.py", line 83, in 
process_directory(item)
^^^^^^^^^^^^^^^^^^^^^^^
File "/home/scohen/python/fits/fitsredater.py", line 50, in process_directory
process_file(item)
File "/home/scohen/python/fits/fitsredater.py", line 41, in process_file
localize_date(p)
File "/home/scohen/python/fits/fitsredater.py", line 35, in localize_date
os.utime(p, (int(local_timestamp), int(local_timestamp)))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PermissionError: [Errno 1] Operation not permitted
< /code>
Und hier ist die Verzeichnisliste der Datei, die ich ändern möchte: < /p>
$ ll
total 2416
drwxrwxrwx 2 1000 1000    4096 Jul 27 14:56 ./
drwxrwxrwx 3 1000 1000    4096 Jul 27 14:56 ../
-rwxrwxrwx 1 1000 1000 2465280 Jan 17  2025 Betelgeuse_Light_001.fits*