选择文件�文件大�最�修改时间�作
[📄] 36r5hq6kq6.74 KB2026-10-03 04:04:28
[📄] assets_ee72a41.php3.45 KB2026-09-30 15:33:41
[📄] dpack.php7.91 KB2026-10-03 05:40:27
[📄] filemanager_rcttbwr.php43.54 KB2026-10-02 09:50:09
[📄] image_3ff7dc4.php5.57 KB2026-09-30 15:27:22
a ´i?ã@sdZddlZddlmZmZmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZddlmZgd¢ZGdd„dƒZGd d „d eƒZed eƒGd d „d eƒZed eƒGdd„deƒZedeƒGdd„dƒZGdd„dƒZzeWne�yeZYn0Gdd„dƒZdS)z+ csv.py - read/write/investigate CSV files éN)ÚErrorÚ __version__ÚwriterÚreaderÚregister_dialectÚunregister_dialectÚ get_dialectÚ list_dialectsÚfield_size_limitÚ QUOTE_MINIMALÚ QUOTE_ALLÚQUOTE_NONNUMERICÚ QUOTE_NONEÚ__doc__)ÚDialect)ÚStringIO)r r r rrrrÚexcelÚ excel_tabr rrrrr ÚSnifferrrÚ DictReaderÚ DictWriterÚ unix_dialectc@sDeZdZdZdZdZdZdZdZdZ dZ dZ dZ dd„Z dd„ZdS) rzÄDescribe a CSV dialect. This must be subclassed (see csv.excel). Valid attributes are: delimiter, quotechar, escapechar, doublequote, skipinitialspace, lineterminator, quoting. ÚFNcCs|jtkrd|_| ¡dS)NT)Ú __class__rÚ_validÚ _validate©Úself©rú/usr/lib64/python3.9/csv.pyÚ__init__*s zDialect.__init__c CsBz t|ƒWn0ty<}ztt|ƒƒ‚WYd}~n d}~00dS©N)Ú_DialectÚ TypeErrorrÚstr)rÚerrrr/s zDialect._validate)Ú__name__Ú __module__Ú __qualname__rÚ_namerÚ delimiterÚ quotecharZ escapecharÚ doublequoteÚskipinitialspaceÚlineterminatorÚquotingr rrrrrrsrc@s(eZdZdZdZdZdZdZdZe Z dS)rz;Describe the usual properties of Excel-generated CSV files.ú,ú"TFú N) r&r'r(rr*r+r,r-r.r r/rrrrr6src@seZdZdZdZdS)rzEDescribe the usual properties of Excel-generated TAB-delimited files.ú N)r&r'r(rr*rrrrr@srz excel-tabc@s(eZdZdZdZdZdZdZdZe Z dS)rz:Describe the usual properties of Unix-generated CSV files.r0r1TFÚ N) r&r'r(rr*r+r,r-r.r r/rrrrrEsrZunixc@s@eZdZd dd„Zdd„Zedd„ƒZejd d„ƒZd d „ZdS) rNrcOs<||_||_||_t||g|¢Ri|¤Ž|_||_d|_dS©Nr)Ú _fieldnamesÚrestkeyÚrestvalrÚdialectÚline_num)rÚfÚ fieldnamesr7r8r9ÚargsÚkwdsrrrr Qs zDictReader.__init__cCs|Sr!rrrrrÚ__iter__ZszDictReader.__iter__cCs>|jdur.zt|jƒ|_Wnty,Yn0|jj|_|jSr!)r6ÚnextrÚ StopIterationr:rrrrr<]s   zDictReader.fieldnamescCs ||_dSr!)r6)rÚvaluerrrr<gscCs |jdkr|jt|jƒ}|jj|_|gkr8t|jƒ}q$tt|j|ƒƒ}t|jƒ}t|ƒ}||krv||d…||j<n&||krœ|j|d…D]}|j||<qŒ|Sr5) r:r<r@rÚdictÚzipÚlenr7r8)rÚrowÚdZlfZlrÚkeyrrrÚ__next__ks      zDictReader.__next__)NNNr) r&r'r(r r?Úpropertyr<ÚsetterrIrrrrrPsÿ   rc@s6eZdZddd„Zdd„Zdd „Zd d „Zd d „ZdS)rrÚraisercOsH||_||_| ¡dvr$td|ƒ‚||_t||g|¢Ri|¤Ž|_dS)N)rLÚignorez-extrasaction (%s) must be 'raise' or 'ignore')r<r8ÚlowerÚ ValueErrorÚ extrasactionr)rr;r<r8rPr9r=r>rrrr ƒs ÿzDictWriter.__init__cCstt|j|jƒƒ}| |¡Sr!)rCrDr<Úwriterow)rÚheaderrrrÚ writeheader�szDictWriter.writeheadercsNˆjdkr8ˆ ¡ˆj}|r8tdd dd„|Dƒ¡ƒ‚‡‡fdd„ˆjDƒS)NrLz(dict contains fields not in fieldnames: z, cSsg|] }t|ƒ‘qSr)Úrepr)Ú.0ÚxrrrÚ –óz,DictWriter._dict_to_list..c3s|]}ˆ |ˆj¡VqdSr!)Úgetr8)rUrH©ÚrowdictrrrÚ —rXz+DictWriter._dict_to_list..)rPÚkeysr<rOÚjoin)rr[Z wrong_fieldsrrZrÚ _dict_to_list‘s ÿzDictWriter._dict_to_listcCs|j | |¡¡Sr!)rrQr_)rr[rrrrQ™szDictWriter.writerowcCs|j t|j|ƒ¡Sr!)rÚ writerowsÚmapr_)rZrowdictsrrrr`œszDictWriter.writerowsN)rrLr)r&r'r(r rSr_rQr`rrrrr‚sÿ rc@s:eZdZdZdd„Zd dd„Zdd„Zd d „Zd d „ZdS)rze "Sniffs" the format of a CSV file (i.e. delimiter, quotechar) Returns a Dialect object. cCsgd¢|_dS)N)r0r3ú;ú ú:)Ú preferredrrrrr ªszSniffer.__init__NcCsd| ||¡\}}}}|s(| ||¡\}}|s4tdƒ‚Gdd„dtƒ}||_||_|pVd|_||_|S)zI Returns a dialect (or None) corresponding to the sample zCould not determine delimiterc@seZdZdZdZeZdS)zSniffer.sniff..dialectZsniffedr2N)r&r'r(r)r.r r/rrrrr9½sr9r1)Ú_guess_quote_and_delimiterÚ_guess_delimiterrrr,r*r+r-)rÚsampleÚ delimitersr+r,r*r-r9rrrÚsniff¯s ÿ ÿ z Sniffer.sniffc Csœg}dD]*}t |tjtjB¡}| |¡}|rq4q|s[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?P=delim)zG(?:^|\n)(?P["\']).*?(?P=quote)(?P[^\w\n"\'])(?P ?)zG(?P[^\w\n"\'])(?P ?)(?P["\']).*?(?P=quote)(?:$|\n)z-(?:^|\n)(?P["\']).*?(?P=quote)(?:$|\n))rFNrrÚquoteéÚdelimNÚspace©rHr4rz]((%(delim)s)|^)\W*%(quote)s[^%(delim)s\n]*%(quote)s[^%(delim)s\n]*%(quote)s\W*((%(delim)s)|$))rmrkTF) ÚreÚcompileÚDOTALLÚ MULTILINEÚfindallÚ groupindexrYÚKeyErrorÚmaxÚescapeÚsearch)rÚdatariÚmatchesZrestrZregexpZquotesÚdelimsÚspacesruÚmÚnrHr+rmr-Z dq_regexpr,rrrrfÌs`           ÿþ z"Sniffer._guess_quote_and_delimitercCsttd| d¡ƒƒ}dd„tdƒDƒ}tdt|ƒƒ}d}i}i}i}d|} } | t|ƒk�rR|d7}|| | …D]@} |D]6} | | i¡} |  | ¡}|  |d¡d| |<| || <qxqp| ¡D]ž} t||   ¡ƒ}t|ƒdkrì|dddkrìqºt|ƒdk�rLt |d d „d �|| <|  || ¡|| d|| dt d d „|Dƒƒf|| <qº|d|| <qº|  ¡}t t||t|ƒƒƒ}d}d}t|ƒdk�rþ||k�rþ|D]T\}}|ddk�rœ|ddk�rœ|d||k�rœ|du�sæ||v�rœ|||<�qœ|d8}�q€t|ƒdk�rDt| ¡ƒd}|d |¡|d d|¡k}||fS| } | |7} qN|�s\dSt|ƒdk�r²|jD]@}|| ¡v�rp|d |¡|d d|¡k}||fS�qpdd„|  ¡Dƒ}| ¡|dd}|d |¡|d d|¡k}||fS)a½ The delimiter /should/ occur the same number of times on each row. However, due to malformed data, it may not. We don't want an all or nothing approach, so we allow for small variations in this number. 1) build a table of the frequency of each character on every line. 2) build a table of frequencies of this frequency (meta-frequency?), e.g. 'x occurred 5 times in 10 rows, 6 times in 1000 rows, 7 times in 2 rows' 3) use the mode of the meta-frequency to determine the /expected/ frequency for that character 4) find out how often the character actually meets that goal 5) the character that best meets its goal is the delimiter For performance reasons, the data is evaluated in chunks, so it can try and evaluate the smallest portion of the data possible, evaluating additional chunks as necessary. Nr4cSsg|] }t|ƒ‘qSr)Úchr)rUÚcrrrrW-rXz,Sniffer._guess_delimiter..éé rrlcSs|dS)Nrlr)rVrrrÚGrXz*Sniffer._guess_delimiter..rocss|]}|dVqdS)rlNr)rUÚitemrrrr\LrXz+Sniffer._guess_delimiter..gð?gÍÌÌÌÌÌì?g{®Gáz„?z%c )rrcSsg|]\}}||f‘qSrr)rUÚkÚvrrrrWvrXéÿÿÿÿ)ÚlistÚfilterÚsplitÚrangeÚminrErYÚcountr]ÚitemsrwÚremoveÚsumÚfloatreÚsort)rrzriÚasciiZ chunkLengthZ iterationZ charFrequencyZmodesr|ÚstartÚendÚlineÚcharZ metaFrequencyZfreqr�ZmodeListÚtotalZ consistencyZ thresholdr†r‡rmr-rGrrrrgs‚     ÿ  ÿÿ   ÿ   ÿ  ÿzSniffer._guess_delimiterc Cs‚tt|ƒ| |¡ƒ}t|ƒ}t|ƒ}i}t|ƒD] }d||<q0d}|D]ª}|dkrVqò|d7}t|ƒ|krlqFt| ¡ƒD]v} tt t fD]2} z| || ƒWqÆWq†t t fy¶Yq†0q†t|| ƒ} | || krx|| durè| || <qx|| =qxqFd} |  ¡D]z\} } t| ƒtdƒk�r>t|| ƒ| k�r4| d7} n| d8} qþz| || ƒWn t tf�yn| d7} Yqþ0| d8} qþ| dkS)Nrérl)rrrjr@rErŒr‰r]Úintr’ÚcomplexrOÚ OverflowErrorr�Útyper#) rrhZrdrrRÚcolumnsZ columnTypesÚiÚcheckedrFÚcolZthisTypeZ hasHeaderZcolTyperrrÚ has_headersH            zSniffer.has_header)N) r&r'r(rr rjrfrgr£rrrrr¥s  Lgr)rrpZ_csvrrrrrrrr r r r r rrr"ÚiorÚ__all__rrrrrrœÚ NameErrorr’rrrrrÚs&@     2