পাইথনে ফাইল তৈরি এবং পরিবর্তনের তারিখ / বার কীভাবে পাবেন?


932

আমার কাছে একটি স্ক্রিপ্ট রয়েছে যা ফাইল তৈরি এবং পরিবর্তনের তারিখের উপর ভিত্তি করে কিছু স্টাফ করা দরকার তবে লিনাক্স এবং উইন্ডোজে চালাতে হবে ।

সেরা কি ক্রস-প্ল্যাটফর্ম উপায় ফাইল সৃষ্টি ও পরিমার্জন পেতে date/timesমধ্যে পাইথন ?


57
ক্রস প্ল্যাটফর্মের উপায়ে আপনি ফাইল তৈরির সময় পেতে পারবেন না। দেখুন docs.python.org/library/os.path.html#os.path.getctime
গ্লিফের

উত্তর:


620

ক্রস-প্ল্যাটফর্মের উপায়ে কিছু ধরণের পরিবর্তনের তারিখ পাওয়া সহজ - কেবল কল করুন এবং আপনি যখন ফাইলটি সর্বশেষ সংশোধন করেছিলেন তখন ইউনিক্স টাইমস্ট্যাম্পটি পাবেন ।os.path.getmtime(path)path

অন্যদিকে ফাইল তৈরির তারিখগুলি পাওয়া খুব কম এবং প্ল্যাটফর্ম নির্ভর, তিনটি বড় ওএসের মধ্যেও পৃথক:

  • উপর উইন্ডোজ , একটি ফাইল এর ctime(এ নথিভুক্ত https://msdn.microsoft.com/en-us/library/14h5k7ff.aspx ) তার তৈরির তারিখ সঞ্চয় করে। আপনি পাইথনে এটিতে os.path.getctime()বা .st_ctimeকল করার ফলাফলের বৈশিষ্ট্যটির মাধ্যমে অ্যাক্সেস করতে পারেন os.stat()। এটি ইউনিক্সে কাজ করবে না , যেখানে ctime শেষবারের মতো এই ফাইলটির বৈশিষ্ট্য বা বিষয়বস্তু পরিবর্তন করা হয়েছিল
  • উপর ম্যাক , সেইসাথে অন্য কিছু ইউনিক্স ভিত্তিক অপারেটিং সিস্টেমের ব্যবহার করতে পারেন .st_birthtimeএকটি কল ফল অ্যাট্রিবিউট os.stat()
  • উপর লিনাক্স , এই পাইথন একটি সি এক্সটেনশন লেখা ছাড়া বর্তমানে অসম্ভব, অন্তত। যদিও লিনাক্সের সাথে সাধারণত ব্যবহৃত কিছু ফাইল সিস্টেমগুলি তৈরির তারিখগুলি সংরক্ষণ করে (উদাহরণস্বরূপ, ext4এগুলিতে সংরক্ষণ করে st_crtime), লিনাক্স কার্নেল তাদের অ্যাক্সেসের কোনও উপায় সরবরাহ করে না ; বিশেষত, সর্বাধিক stat()কার্নেল সংস্করণ হিসাবে সিটিতে কলগুলি থেকে যে স্ট্রাক্টগুলি ফিরে আসে তাতে কোনও তৈরি তারিখের ক্ষেত্র নেই । আপনি দেখতে পাবেন যে সনাক্তকারীটি st_crtimeবর্তমানে পাইথন উত্সের কোথাও উপস্থিত হয় না । অন্তত যদি আপনি আছেন ext4, ডাটা হয় ফাইল সিস্টেমের মধ্যে inodes সংযুক্ত, কিন্তু এটা ব্যবহার করার কোন সুবিধাজনক উপায়।

    লিনাক্সের পরবর্তী সর্বোত্তম জিনিসটি হ'ল ফাইলটির অ্যাক্সেস করা mtime, ফলাফল os.path.getmtime()বা এর .st_mtimeবৈশিষ্ট্য দ্বারা os.stat()। এটি আপনাকে ফাইলের সামগ্রীতে পরিবর্তন করার সময় দেবে যা কিছু ব্যবহারের ক্ষেত্রে পর্যাপ্ত হতে পারে।

এগুলি একসাথে রেখে, ক্রস প্ল্যাটফর্ম কোডটি দেখতে এমন কিছু দেখতে পাওয়া উচিত ...

import os
import platform

def creation_date(path_to_file):
    """
    Try to get the date that a file was created, falling back to when it was
    last modified if that isn't possible.
    See http://stackoverflow.com/a/39501288/1709587 for explanation.
    """
    if platform.system() == 'Windows':
        return os.path.getctime(path_to_file)
    else:
        stat = os.stat(path_to_file)
        try:
            return stat.st_birthtime
        except AttributeError:
            # We're probably on Linux. No easy way to get creation dates here,
            # so we'll settle for when its content was last modified.
            return stat.st_mtime

9
আমি এটি একত্রে ছুঁড়ে ফেলার জন্য যথাসাধ্য চেষ্টা করেছি (এবং প্রক্রিয়াটিতে কয়েক ঘন্টা গবেষণা করে ব্যয় করেছি), এবং আমি নিশ্চিত যে এখানে উত্তরগুলির চেয়ে কমপক্ষে আরও সঠিক ছিল, তবে এটি সত্যিই কঠিন বিষয় এবং আমি ' d লোকেরা যে কোনও সংশোধন, স্পষ্টতা বা অন্যান্য ইনপুট অফার করতে পারে তার প্রশংসা করে। বিশেষত, আমি ext4লিনাক্সের অধীনে ড্রাইভে এই ডেটা অ্যাক্সেসের একটি উপায় তৈরি করতে চাই এবং লিনাক্স যখন উইন্ডো দ্বারা লিখিত ফাইলগুলি পড়বে বা তার বিপরীতে, অন্যটি ব্যবহার করার পরে কী ঘটবে তা শিখতে চাই st_ctime
মার্ক আমেরিকা

25
সত্যি বলতে, ফাইল তৈরির সময়টি সাধারণত মোটামুটি অকেজো। আপনি যখন কোনও বিদ্যমান ফাইলটি মোড দিয়ে লেখার জন্য "w"খুলেন, এটি এটি প্রতিস্থাপন করে না, এটি কেবল বিদ্যমান ফাইলটি খোলায় এবং এটি কেটে যাবে। যদিও ফাইলের বিষয়বস্তুগুলি এটি নির্মাণের সাথে যা কিছু ছিল তা সম্পূর্ণরূপে সম্পর্কিত নয়, তবুও আপনাকে বলা হবে যে বর্তমান সংস্করণটির আগে ফাইলটি "তৈরি" হয়েছিল। বিপরীতে, সম্পাদকরা যেগুলি সংরক্ষণে পারমাণবিক প্রতিস্থাপন ব্যবহার করে (মূল ফাইলটি নতুন ওয়ার্ক-ইন-প্রগ্রেস টেম্প ফাইল দ্বারা প্রতিস্থাপিত হয়) তারা আরও একটি সাম্প্রতিক তৈরির তারিখ প্রদর্শন করবে, এমনকি আপনি কেবল একটি অক্ষর মুছে ফেললেও। পরিবর্তনের সময়টি ব্যবহার করুন, সময় তৈরির জন্য গ্রাব করবেন না।
শ্যাডোর্যাঙ্গার

3
বহু বছর পরে, অবশেষে আমি ফাইল তৈরির সময়ের জন্য একটি ব্যবহার খুঁজে পেয়েছি! আমি নির্দিষ্ট ডিরেক্টরিতে একটি ফাইলের নামকরণ কনভেনশন চেক করার জন্য কোড লিখছি, সুতরাং প্রথমে আমি কনভেনশন প্রতিষ্ঠিত হওয়ার পরে প্রথমে নামকরণ করা ফাইলগুলি বিবেচনা করতে চাই। যদি এটা ইতিমধ্যে সেখানে তখন ছিল তাতে গ্রান্ডফেদার এর: সমগ্র বিষয়বস্তু (র দ্বারা mtime) প্রতিস্থাপন করা হচ্ছে অপ্রাসঙ্গিক।
স্টিভ জেসপ

1
হাই মার্ক. আমি একটি সরলীকরণ প্রস্তাব। লিনাক্সে, ফিরে আসা stat.st_ctimeআরও প্রাসঙ্গিক কারণ অনেক ক্ষেত্রে, সর্বশেষ মেটাডাটা পরিবর্তনের সময়টি তৈরির সময় হতে পারে (কমপক্ষে ctimeপ্রকৃত সৃষ্টির চেয়ে কম সময়mtime )। অতএব, আপনি কেবল দ্বারা স্নিপেট দ্বারা প্রতিস্থাপন করতে পারেন stat = os.stat(path_to_file); try: return stat.st_birthtime; except AttributeError: return stat.st_ctime। আপনি কি মনে করেন? চিয়ার্স
অলিবার

4
@ অলিব্রে "কমপক্ষে সিটিটাইম মাইটাইমের চেয়ে প্রকৃত সৃষ্টির সময়ের কাছাকাছি" - না এটি নয়; এটি এমন কিছু যা আমি বেশ কয়েকবার বলেছি কিন্তু এটি সম্পূর্ণ মিথ্যা। যতক্ষণ না আপনি নিজে আপনার inode মান সঙ্গে তছনছ করেছি, ctimeসর্বদা বা সমান হওয়া উচিত পরবর্তী চেয়ে mtime, কারন একটি mtimeপরিবর্তন ঘটায় একটি ctime(কারণ পরিবর্তন mtimeনিজেই "মেটাডেটা" বলা হয়)। Stackoverflow.com/a/39521489/1709587 দেখুন যেখানে আমি এটি চিত্রিত করার জন্য কয়েকটি উদাহরণ কোড সরবরাহ করি।
মার্ক অ্যামেরি

676

আপনার কয়েকটি পছন্দ আছে। এক জন্য, আপনি নিম্নলিখিত os.path.getmtimeএবং os.path.getctimeফাংশন ব্যবহার করতে পারেন :

import os.path, time
print("last modified: %s" % time.ctime(os.path.getmtime(file)))
print("created: %s" % time.ctime(os.path.getctime(file)))

আপনার অন্যান্য বিকল্পটি হ'ল os.stat:

import os, time
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
print("last modified: %s" % time.ctime(mtime))

দ্রষ্টব্য : * নিক্স সিস্টেমে তৈরির সময় উল্লেখ ctime()করে না , বরং শেষ বারের সময় ইনোডের ডেটা পরিবর্তন হয়েছিল। (একটি আকর্ষণীয় ব্লগ পোস্টের লিঙ্ক সরবরাহ করে মন্তব্যে সেই সত্যটি আরও স্পষ্ট করার জন্য কোজিরোকে ধন্যবাদ)


169
@ গ্লাইফের মন্তব্যে যে কেউ প্রশ্নটি হারিয়েছে কেবল সে ক্ষেত্রে সিটিটাইম পসিক্স সিস্টেমে তৈরির সময় নয় । আমি বিস্মিত হই যে বিগত তিন বছরে কতজন লোক এই পোস্টটি স্কার্ম করেছে এবং বগী কোডটি লিখতে চলেছে।
কোজিরো

16
মনে রাখবেন প্রথম উদাহরণটি আপনাকে একটি স্ট্রিং দেয়, তারিখের সময় বা সংখ্যাটি নয়।
gak

1
@kojiro ব্লগ পোস্টে আপনি সাথে সংযুক্ত আছেন তাহলে ইউনিক্স একটি ফাইল এর যে আরো স্পষ্ট হতে পারে ctimeআপডেট যখনই mtimeকরে (যেহেতু mtime"মেটাডেটা"), এবং তাই ctimeসাধারণত হয় সর্বদা সমান বা এগিয়েmtimectimeএইভাবে "তৈরি" সময় হিসাবে আচরণ করা মোটেই কোনও অর্থবোধ করে না। -1!
মার্ক অ্যামেরি

আপনার প্রথম বিকল্পটি ফাইল তৈরি এবং শেষ পরিবর্তন উভয়ের জন্য একই ফলাফল দেয়! Last modified: Fri Jan 31 11:08:13 2020এবং Created: Fri Jan 31 11:08:13 2020লিনাক্স উবুন্টু 16.04 এ!
ফ্রিদ আলজানি

আমি আবিষ্কার করেছি যে time.ctime(os.path.getmtime(file))সিস্টেমটি বা ব্যবহারকারীর দ্বারা ফাইলটি সংশোধিত হয়েছে কিনা তা নির্ভর করে 2 প্রকারের স্ট্রিং প্রদান করে। যদি এটি সিস্টেম দ্বারা সংশোধিত করা হয় তবে স্ট্রিংটিতে মাস এবং দিনের মধ্যে 2 স্পেস থাকবে। আমি জানি না কেন
মাত্তো আন্তোলিনি

376

এটির জন্য ব্যবহারের সেরা ফাংশন হ'ল os.path.getmtime () । অভ্যন্তরীণভাবে, এটি কেবল ব্যবহার করে os.stat(filename).st_mtime

ডেটটাইম মডিউল হ'ল সেরা টাইমস্ট্যাম্পগুলি পরিচালনা করে, যাতে আপনি datetimeএই জাতীয় একটি বিষয় হিসাবে পরিবর্তনের তারিখটি পেতে পারেন :

import os
import datetime
def modification_date(filename):
    t = os.path.getmtime(filename)
    return datetime.datetime.fromtimestamp(t)

ব্যবহারের উদাহরণ:

>>> d = modification_date('/var/log/syslog')
>>> print d
2009-10-06 10:50:01
>>> print repr(d)
datetime.datetime(2009, 10, 6, 10, 50, 1)

1
এই উত্তরটিও কিছুটা ভুল। getmtimeইউনিক্সে পাওয়া সবচেয়ে নিকটতম জিনিস (যেখানে তৈরির তারিখগুলি পাওয়া সম্ভব নয়) তবে উইন্ডোজে ব্যবহারের জন্য এটি সর্বোত্তম ফাংশন নয়, যেখানে ctimeতৈরির সময়।
মার্ক অ্যামেরি

3
@ মার্কআমেরি - এই উত্তরটি পরিষ্কারভাবে কেবলমাত্র পরিবর্তনের সময় হিসাবে লেবেলযুক্ত।
আর্টঅফ ওয়ারফেয়ার

47

os.stat https://docs.python.org/2/library/stat.html#module-stat

সম্পাদনা করুন: নতুন কোডে আপনার সম্ভবত os.path.getmtime () (ধন্যবাদ ক্রিশ্চিয়ান ওডার্ড) ব্যবহার করা উচিত
তবে নোট করুন যে এটি ভগ্নাংশের সেকেন্ডের সাথে সময়_t এর একটি ভাসমান পয়েন্ট মান প্রদান করে (যদি আপনার ওএস এটি সমর্থন করে)


44
os.path.getmtime () এর জন্য তৈরি করা হয়েছে এবং সহজ।
ক্রিশ্চিয়ান ওডার্ড

5
এখানে "নতুন কোডে" ধারাটি কিছুটা বিভ্রান্তিকর। os.path.getmtime()পাইথন ২.০.২. এর পরে প্রায় ছিল ( পুরানো ডক্সগুলি দেখুন ), আমি প্রকাশিত হয়েছি আমার সন্তানের বেশিরভাগ দাঁত হারানোর আগে এবং আপনি এই উত্তরের মূল সংস্করণটি লেখার প্রায় এক দশক আগে।
মার্ক অ্যামেরি

39

মোড সময় পাওয়ার জন্য দুটি পদ্ধতি রয়েছে, os.path.getmtime () বা os.stat (), তবে সিটিটাইম নির্ভরযোগ্য ক্রস-প্ল্যাটফর্ম নয় (নীচে দেখুন)।

os.path.getmtime ()

getmtime ( পাথ ) পাথের
শেষ পরিবর্তনের সময়টি ফিরে আসুন। প্রত্যাবর্তনের মান হ'ল একটি সংখ্যা যা যুগের পর থেকে সেকেন্ডের সংখ্যা দেয় (সময় মডিউলটি দেখুন)। ফাইলটি উপস্থিত না থাকলে বা অ্যাক্সেসযোগ্য হলে ওএসআরআর বাড়ান। 1.5.0 সংস্করণে নতুন। সংস্করণ ২.৩ এ পরিবর্তিত হয়েছে: যদি os.stat_float_times () সত্য করে দেয় তবে ফলাফলটি ভাসমান পয়েন্ট সংখ্যা number

os.stat ()

স্টেট ( পাথ )
প্রদত্ত পথে একটি স্ট্যাট () সিস্টেম কল করুন। প্রত্যাবর্তন মান হ'ল একটি অবজেক্ট যার বৈশিষ্ট্যগুলি স্ট্যাট কাঠামোর সদস্যদের সাথে সম্পর্কিত, যেমন: st_mode (সুরক্ষা বিট), st_ino (ইনোড নম্বর), st_dev (ডিভাইস), st_nlink (হার্ড লিঙ্কের সংখ্যা), st_uid (মালিকের ব্যবহারকারীর আইডি) ), st_gid (মালিকের গ্রুপ আইডি), st_size (ফাইলের আকার, বাইটে), st_atime (অতি সাম্প্রতিক অ্যাক্সেসের সময় ), st_mটাইম (অতি সাম্প্রতিক সামগ্রী পরিবর্তনের সময়), st_cime (প্ল্যাটফর্ম নির্ভর; সর্বশেষ সাম্প্রতিক মেটাডেটা পরিবর্তনের সময়) ইউনিক্সে, বা উইন্ডোজে তৈরির সময়) :

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)
>>> statinfo.st_size
926L
>>> 

উপরের উদাহরণে আপনি যথাক্রমে এমটাইম এবং সিটিআইএম পেতে স্ট্যাটিনফো.স্ট_মিটাইম বা স্ট্যাটিনফো.স্ট_সিটাইম ব্যবহার করবেন।


13

পাইথন ৩.৪ এবং এর উপরে, আপনি অবজেক্ট ওরিয়েন্টেড প্যাথলিব মডিউল ইন্টারফেসটি ব্যবহার করতে পারেন যা বেশিরভাগ ওএস মডিউলের জন্য মোড়ক অন্তর্ভুক্ত করে। ফাইলের পরিসংখ্যান পাওয়ার উদাহরণ এখানে।

>>> import pathlib
>>> fname = pathlib.Path('test.py')
>>> assert fname.exists(), f'No such file: {fname}'  # check that the file exists
>>> print(fname.stat())
os.stat_result(st_mode=33206, st_ino=5066549581564298, st_dev=573948050, st_nlink=1, st_uid=0, st_gid=0, st_size=413, st_atime=1523480272, st_mtime=1539787740, st_ctime=1523480272)

যা os.stat_resultরয়েছে সে সম্পর্কে আরও তথ্যের জন্য ডকুমেন্টেশনটি দেখুন । পরিবর্তনের সময় আপনি চান fname.stat().st_mtime:

>>> import datetime
>>> mtime = datetime.datetime.fromtimestamp(fname.stat().st_mtime)
>>> print(mtime)
datetime.datetime(2018, 10, 17, 10, 49, 0, 249980)

আপনি যদি উইন্ডোজটিতে তৈরির সময় বা ইউনিক্সের সর্বশেষতম মেটাডেটা পরিবর্তন চান তবে আপনি এটি ব্যবহার করতে পারেন fname.stat().st_ctime:

>>> ctime = datetime.datetime.fromtimestamp(fname.stat().st_ctime)
>>> print(ctime)
datetime.datetime(2018, 4, 11, 16, 57, 52, 151953)

এই নিবন্ধটিতে পथলিব মডিউলের জন্য আরও সহায়ক তথ্য এবং উদাহরণ রয়েছে।


11

os.statst_mtimeএবং একটি st_ctimeবৈশিষ্ট্যযুক্ত একটি নামযুক্ত tuple প্রদান । st_mtimeউভয় প্ল্যাটফর্মে পরিবর্তনের সময় রয়েছে ; দুর্ভাগ্যক্রমে, উইন্ডোজে, এর ctimeঅর্থ "সৃষ্টির সময়", যেখানে পসিক্সের অর্থ "পরিবর্তিত সময়"। আমি পসিক্স প্ল্যাটফর্মে সৃষ্টির সময় পাওয়ার কোনও উপায় সম্পর্কে অবগত নই।


এখানে ট্যাগ-টিপলস সম্পর্কে আরও রয়েছে: স্ট্যাকওভারফ্লো. com/ প্রশ্নগুলি / 2970608/… এগুলি টিপলসের মতো কাজ dir(..)করে তবে একটিতে চেষ্টা করে। উদাহরণস্বরূপdir(os.stat(os.listdir('.')[0]))
এভেজেনি সার্জিভ

9
import os, time, datetime

file = "somefile.txt"
print(file)

print("Modified")
print(os.stat(file)[-2])
print(os.stat(file).st_mtime)
print(os.path.getmtime(file))

print()

print("Created")
print(os.stat(file)[-1])
print(os.stat(file).st_ctime)
print(os.path.getctime(file))

print()

modified = os.path.getmtime(file)
print("Date modified: "+time.ctime(modified))
print("Date modified:",datetime.datetime.fromtimestamp(modified))
year,month,day,hour,minute,second=time.localtime(modified)[:-3]
print("Date modified: %02d/%02d/%d %02d:%02d:%02d"%(day,month,year,hour,minute,second))

print()

created = os.path.getctime(file)
print("Date created: "+time.ctime(created))
print("Date created:",datetime.datetime.fromtimestamp(created))
year,month,day,hour,minute,second=time.localtime(created)[:-3]
print("Date created: %02d/%02d/%d %02d:%02d:%02d"%(day,month,year,hour,minute,second))

কপি করে প্রিন্ট

somefile.txt
Modified
1429613446
1429613446.0
1429613446.0

Created
1517491049
1517491049.28306
1517491049.28306

Date modified: Tue Apr 21 11:50:46 2015
Date modified: 2015-04-21 11:50:46
Date modified: 21/04/2015 11:50:46

Date created: Thu Feb  1 13:17:29 2018
Date created: 2018-02-01 13:17:29.283060
Date created: 01/02/2018 13:17:29

-১: অন্যান্য উত্তরের মতো একই এটি আপনাকে উইন্ডোজ-তে ফাইলের তৈরির সময় দেয় না (যা আবারও উত্তরে উল্লিখিত হয়নি)।
ntninja

@ এনটিনিজা আপনি কি সে সম্পর্কে নিশ্চিত? আমি কেবল উইন্ডোজ ব্যবহার করি এবং এটি সম্পূর্ণরূপে কাজ করে। আমি এই স্ক্রিপ্টটি ২০১৫ সালের প্রথম দিকে লিখেছিলাম i আমি এখানে অন্যদের তুলনায় এটি আরও স্পষ্ট, সোজাসুজি, সম্পূর্ণ এবং স্ব-ব্যাখ্যামূলক বলে মনে করি। (যা আমি আমার পুরানো স্ক্রিপ্টগুলির পরিবর্তে এখানে সন্ধান করার সিদ্ধান্ত নিয়েছিলাম কেবল সেখানে নতুন কিছু ছিল n নাহ ... এই উপায়)
পুডল

ওহ, আমি বলতে চাইছিলাম "... আপনি উইন্ডোজ না থাকলে এই ফাইলটি তৈরির সময় দেয় না "। দুঃখিত! বাস্তব অবশেষ যে এই উত্তরটি বহনযোগ্য নয় এবং এই সত্যটির উল্লেখ করে না। (লিনাক্সে আউটপুট উদাহরণ: পেস্টবিন.
com

@ এন্নিঞ্জা আপনি কি এখন সবাইকে বলবেন?
পুডল

ইতিমধ্যে এখানে অন্য কিছু মন্তব্য রেখেছি এবং আমি একটি উত্তর পোস্ট করব যা শীঘ্রই (সাম্প্রতিক) লিনাক্সে কাজ করে। তবে সত্যই, আপনার পোস্টে কেবলমাত্র ভুলটি হ'ল এটি কেবল উইন্ডোজ-এর উত্তর যা এই সত্যটির উল্লেখ করে না। প্রশ্নে ওপি এমনকি উইন্ডোজ এবং লিনাক্সের সামঞ্জস্যপূর্ণ সমাধানের জন্য বিশেষভাবে জিজ্ঞাসা করেছিল। এই হিসাবে আমি মনে করি এটি খুব সহায়ক হবে যদি আপনি শীর্ষে কোথাও এই "বিস্তারিত" যুক্ত করেন, যাতে লোকেরা সিটিটাইমে চিন্তাভাবনা থেকে বিভ্রান্ত না হয় যেগুলি তারা একাধিক প্ল্যাটফর্মকে টার্গেট করার সময় খুঁজছেন।
ntninja

2
>>> import os
>>> os.stat('feedparser.py').st_mtime
1136961142.0
>>> os.stat('feedparser.py').st_ctime
1222664012.233
>>> 

-1: অন্য কোথাও উল্লিখিত হিসাবে এটি উইন্ডোতে না থাকলে (যা উত্তরটি উল্লেখ করে না!) যদি না আপনি ফাইলটি তৈরির সময় দেয় না।
ntninja

0

যদি নিম্নলিখিত প্রতীকী লিঙ্কগুলি গুরুত্বপূর্ণ না হয় তবে আপনি os.lstatবিল্টিনও ব্যবহার করতে পারেন ।

>>> os.lstat("2048.py")
posix.stat_result(st_mode=33188, st_ino=4172202, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=2078, st_atime=1423378041, st_mtime=1423377552, st_ctime=1423377553)
>>> os.lstat("2048.py").st_atime
1423378041.0

এটি সর্বশেষ পঠনের সময় দেবে (কমপক্ষে ইউনিক্সে), যা অবশ্যই বলা হয়নি isn't
মার্ক আমেরিকা

0

এটি crtimeলাইব্রেরিতে একবার দেখে নেওয়া উচিত যা ফাইল তৈরির সময় ক্রস প্ল্যাটফর্ম অ্যাক্সেস প্রয়োগ করে।

from crtime import get_crtimes_in_dir

for fname, date in get_crtimes_in_dir(".", raise_on_error=True, as_epoch=False):
    print(fname, date)
    # file_a.py Mon Mar 18 20:51:18 CET 2019

1
আমি এর বিরুদ্ধে দৃ strongly়ভাবে পরামর্শ দিচ্ছি: এটি debugfsলিনাক্সে ব্যবহার করে যা সংজ্ঞা দ্বারা অস্থির হয়, প্রতিটি কিছুর জন্য শীর্ষ স্তরের রুট অ্যাক্সেসের প্রয়োজন হয় এবং প্রতিটি দিক থেকেই আপনার মা আপনাকে সর্বদা সতর্ক করে দিয়েছিল এমন একটি বিষয় হয়ে থাকে। (তবে হ্যাঁ, এটি সম্ভবত কাজ করে যদি আপনি সত্যিই মরিয়া হয়ে থাকেন এবং সুরক্ষিত বুট ছাড়াই কোনও সিস্টেমে আসল
সুপারইউজার হিসাবে উপস্থিত হন

@ এন্নিঞ্জা আমি সম্ভবত উত্পাদন কখনও ব্যবহার করতে চাই না, তবে এটি "হোম স্ক্রিপ্টিং" এর জন্য কার্যকর হতে পারে useful
দেলগান

-2

os.statসৃষ্টির সময় অন্তর্ভুক্ত করে না। os.stat()সময় উপস্থিত রয়েছে এমন উপাদানটির জন্য st_nything এর কোনও সংজ্ঞা নেই ।

সুতরাং এটি চেষ্টা করুন:

os.stat('feedparser.py')[8]

এলএস-আল্লায় ফাইলটিতে আপনার তৈরি তারিখের সাথে এটি তুলনা করুন

তাদের একই হওয়া উচিত।


6
ভুল! os.stat ('feedparser.py') [8] st_mtime বোঝায়, সৃষ্টির সময় নয়। দয়া করে ডকুমেন্টেশন দেখুন: docs.python.org/library/os.html#os.stat
মিলারদেব

4
কুরুচিপূর্ণ সংখ্যা [8] এর পরিবর্তে .st_ctime ব্যবহার করুন।
guettli

-3

আমি সিস্টেমের স্ট্যাট কমান্ডটি চালিয়ে এবং আউটপুট পার্স করে পোস্টিক্সে সৃষ্টির সময় পেতে সক্ষম হয়েছি।

commands.getoutput('stat FILENAME').split('\"')[7]

টার্মিনাল (ওএস এক্স) থেকে পাইথনের বাইরের স্ট্যাটিংটি ফিরে এসেছে:

805306374 3382786932 -rwx------ 1 km staff 0 1098083 "Aug 29 12:02:05 2013" "Aug 29 12:02:05 2013" "Aug 29 12:02:20 2013" "Aug 27 12:35:28 2013" 61440 2150 0 testfile.txt

... যেখানে চতুর্থ তারিখের সময় হ'ল ফাইল তৈরি (সিটিটাইমের পরিবর্তনের পরিবর্তে অন্যান্য মন্তব্য উল্লিখিত হিসাবে))


13
-১: শেল কমান্ড থেকে মানুষের জন্য বোঝানো একটি আউটপুট পার্স করা খুব খারাপ ধারণা। এবং এই আদেশটি এমনকি ক্রস-সামঞ্জস্যপূর্ণ নয়।
MestreLion
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.